最长连续字符

用递归算法写一个函数,求字符串最长连续字符的长度,比如aaaabbcc的长度为4,aabb的长度为2,ab的长度为1。

#include <iostream>
#include <cstring>
using namespace std;
int MaxLengthString(char str[])
{
    int len=strlen(str);
    if(len==1) return 1;
    if(str==‘\0‘) return 0;
    if(*(str+1)==‘\0‘) return 1;
    if(*str == *(str+1)) return 1+MaxLengthString(str+1);
    return MaxLengthString(str+1);
}
int main()
{
    char str[100];
    while(cin.getline(str,100))
    {
        int len=MaxLengthString(str);
        cout<<"Max length of string is:"<<len<<endl;
    }
    return 0;
}
时间: 2024-10-24 22:09:29

最长连续字符的相关文章

【字符串处理算法】最长连续字符及其出现次数的算法设计及C代码实现

一.需求描述 输入一个字符串,编写程序找出这个字符串中的最长连续字符,并求出其连续出现的次数. 例如,"123444445"中的最长连续字符是4,其连续出现的次数为5:"abcddef"中的最长连续字符是d,其连续出现的次数为2:"ab"中的最长连续字符是a,其连续出现的次数为1. 二.算法设计 我们可以采取逐个比较字符串中各个字符的办法来获取最长连续字符及其连续出现的次数.程序的总体流程如图1所示. 图1 程序的总体流程 三.特殊流程考虑 在编

C++求字符串最长连续字符的长度的代码

下边内容是关于 C++求字符串最长连续字符的长度的内容. #include<assert.h> { assert(s!=NULL); int temp_count,final_count=0; p=s; { temp_count=0; { temp_count++; else break; } if(temp_count>final_count) { final_char=temp_char; final_count=temp_count; } } return final_count;

ACdream ????计算最长连续相同字符的个数

计算最长连续相同字符的个数 测试数据 输入: aaaassdfg adasafag ssddffffgt 输出: 4 1 4 <span style="font-size:18px;">#include<stdio.h> #include<string.h> int main() { int i,n,t; int b[105]; char a[105]; scanf("%d",&t); while(t--) { n=0;

随意输入N个英文字符,找出其中最长连续的排列。

int out_max_length_crease_str(const char *p, std::vector<std::string> &vct){ vct.clear(); int nlen = strlen(p); if (nlen == 0){ return 0; } if (nlen == 1){ vct.push_back(p); return 1; } char *buf = new char(nlen); memset(buf, 0, nlen); char firs

ALBB 找公共最长连续字母序列的长度

问题描写叙述 给定一个 query 和一个 text .均由小写字母组成.要求在 text 中找出以相同的顺序连续出如今 query 中的最长连续字母序列的长度. 比如, query为"acbac".text为"acaccbabb",那么text中的"cba"为最长的连续出如今query中的字母序列,因此,返回结果应该为其长度3.请注意程序效率. 代码思想 1.遍历两字符串的每个元素,遇见同样元素则计算该次同样次数同样元素数目.并与之前最大值比較

leetcode424 替换后的最长重复字符 java题解

本题是比较典型的滑动窗口问题 这类问题一般通过一个滑动窗口就能在O(N)的时间复杂度下求解 本题可以先退化成考虑K=0的情况,此时题目就变成了求解字符串中最长连续子串长度问题了 我们先可以通过这个特例先了解一下滑动窗口的求解过程 上图的求解过程展示中,窗口从左至右不断扩张/滑动,当窗口触达字符串末尾字符时,运算结束,窗口的宽度为最终结果.初始窗口的宽度为1,我们不断的通过向当前窗口覆盖的子串后面追加一个字符看是否能满足我们的要求,如果满足窗口扩张,如果不满足,窗口向右滑动. 当K>0时,子串的条

uva507 - Jill Rides Again(最长连续和)

题目:uva507 - Jill Rides Again(最长连续和) 题目大意:给每两个站之间的满意度,满意的路线必须加起来的和不小于0.帮Jill找出她满意的路线,要求是最长的,并且一样长的话取站相对靠前的. 代码: #include <stdio.h> #include <string.h> const int N = 20005; int s, b, e; int stop[N]; int solve () { int mm = stop[1]; int sum = sto

任意区间的最长连续递增子序列,最大连续子序列和

hdu3308 给n个数,有m个操作 U a b 表示将第a个数改成b Q a b 表示询问区间[a,b]的最长连续递增子序列. 区间询问问题且带修改,一般是用线段树来解决 那么要维护 Llen[rt], Lval[rt][2] 表示rt所对应的区间[l,r] 以l开头的最长连续递增子序列的长度, Lval[rt][0]表示子序列的最左边的值,Lval[rt][1]表示子序列最右边的值 Rlen[rt],Rval[rt][2]  表示rt所对应的区间[l,r]以r结尾的最长连续递增子序列的长度,

HDU 3308 LCIS(最长连续上升子序列)(线段树区间合并)

题意:给你n个整数,有两种操作,U A B把第A个数变成B,Q A B查询区间[A,B]的最长连续上升序列. 思路:还是查询和更新操作,而且也是询问区间中满足条件的连续最长区间 ,所以是线段树区间合并类型的题,通法是开三棵线段树,一个记录此区间内的LCIS的最长长度,一个记录从左边第一个数开始的LCIS长度,另一个记录从右边最后一个数结尾的LCIS长度.然后试图找到父亲与儿子关系维护的递推关系式就好 本题中的递推关系是: 1. 左儿子最右边的值 < 右儿子最左边的值 lmx = (左儿子的lmx