统计一个01字符串中0,1连续出现的最大次数

比如:0011000111

则表示0最大出现3次,1最大出现3次。

程序的思路很巧妙,不复杂。

// demo.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;

static void strwe(char *str)
{
    int len=0;
    while(*str++)
        len++;    //while循环结束以后  得到的就是字符串的实际长度
    str-=2;        //while循环结束以后  str实际指向str字符串的结束符飞‘\0’的下一个字符
}

static void delete_char(char *str,char c)    //删除字符串中指定的字符
{
    if (str==NULL)
    {
        return ;
    }
    char *p=str;
    while(*p++)
    {
        if (*p!=c)
        {
            *str++=*p;
        }
    }
    *str=‘\0‘;
}

static void caculate01(const char *str,int &max0,int &max1)
{
    int temp0=0;
    int temp1=0;
    if (!str)
    {
        return ;
    }
    while(*str)
    {
        if (*str==‘0‘)
        {
            max0+=1;
            if (*(str+1)==‘1‘)
            {
                if (max0>temp0)
                {
                    temp0=max0;
                }
                max0=0;
            }

        }
        else if (*str==‘1‘)
        {
            max1+=1;
            if (*(str+1)==‘0‘)
            {
                if (max1>temp1)
                {
                    temp1=max1;
                }
                max1=0;
            }

        }
        str++;
    }
    max0=(max0>temp0)?max0:temp0;
    max1=(max1>temp1)?max1:temp1;  //这里这样写的目的是防止01010001111样式的字符串  所带来的bug
    //如果你不按照上两行这样写  你测试01010001111会得到  3  1  而不是   3   4
}

int main()
{
    char str[]="01010001111";
    int max0=0;
    int max1=0;
    caculate01(str,max0,max1);
    cout<<"0连续出现的次数最多为:"<<max0<<endl;
    cout<<"1连续出现的次数最多为:"<<max1<<endl;
    return 0;
}

测试0101000000111111101003

时间: 2024-12-13 09:44:57

统计一个01字符串中0,1连续出现的最大次数的相关文章

统计一个给定字符串中指定的字符出现的次数

#include<stdio.h> #include<string.h> #include<stdlib.h> int main() { char source[80],dest[5]; int len_s,len_d,*count; int temp,i,j; while(1) { gets(dest); gets(source); if (strcmp(dest,"#")==0) break; else { len_s=strlen(source

[华为机试练习题]43.在字符串中找出连续最长的数字串

题目 描述: 请一个在字符串中找出连续最长的数字串,并把这个串的长度返回:如果存在长度相同的连续数字串,返回最后一个连续数字串: 注意:数字串只需要是数字组成的就可以,并不要求顺序,比如数字串"1234"的长度就小于数字串"1359055",如果没有数字,则返回空字符串("")而不是NULL! 样例输入 abcd12345ed125ss123058789 abcd12345ss54761 样例输出 输出123058789,函数返回值9 输出547

c# 字符串中多个连续空格转为一个空格

#region 字符串中多个连续空格转为一个空格 /// <summary> /// 字符串中多个连续空格转为一个空格 /// </summary> /// <param name="str">待处理的字符串</param> /// <returns>合并空格后的字符串</returns> public static string MergeSpace(string str) { if (str != string

在字符串中找出连续最长的数字串 在字符串中找出连续最长的数字串,并把这个串的长度返回

写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存.例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9, #include<iostream> using namespace std; int ContinueMax(char *

【华为OJ平台练习题】统计一段字符串中含有空格、英文、数字的个数

//统计一段字符串中含有空格.英文.数字的个数 #include <iostream> using namespace std; void processString(char* s) { int n = strlen(s); int kg=0; int shuzi=0; int yingwen=0; if(n>0) { for(int a=0;a<n;a++) { if(s[a]==' ') kg++; if(s[a]<='9'&&s[a]>='0')

统计一段长字符串中某字符串的出现次数

截取字符串统计字符串出现次数 通过替换字符串,统计字符串出现次数 通过正则表达式,统计字符串出现次数 package constxiong.interview; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 统计一段长字符串中某字符串的出现次数 * @author ConstXiong * @date 2019-11-13 11:01:22 */ public class TestCountWordTi

从一个表达式字符串中找到最深层圆括号内的表达式

编程实现:从一个表达式字符串中找到最深层圆括号内的表达式. 如:从表达式 x+(y*z)+(m-(3+4)) 中找到3+4 .如果由多个表达式具有相同的最深深度则只需要给出其中一个.备注:算数表达式本身都是正确的,不要考虑括号不配对等错误表达式的处理. /* * 编程实现,从一个表达式字符串中找到最深层圆括号内的表达式. * 如: 从表达式 x+(y*z)+(m-(3+4))中找到3+4. 如果由多个表达式具有相同的最深深度则只需要给出其中一个. * 备注: 算数表达式本身都是正确的,不要考虑括

Excel-判断一个文本字符串中是否包含数字! 判断一个文本字符串是否是纯汉字!

0.判断一个文本字符串中是否包含数字!/判断一个文本字符串是否是纯汉字! 公式=IF(LENB(A1)=2*LEN(A1),”都是汉字“,“含有非汉字字符”) 解释函数: LEN(A1)#返回文本字符串中的字符个数:  ##双字字符*1*双字节字符个数+单字节字符*1*单字节字符个<=>计算字符个数: LENB(A1)#返回文本字符串中的字符个数.与双字节字符集(DBCS)一起使用.##双字节字符*2*双字节字符个数+单字节字符*1*单字节字符个数<=>计算字节个数: 字符:分为双

C++代码片段01 - 字符串中查找是否有某个字符

<span style="font-size:18px;">if( third_name.find('*')!=string::npos || third_name.find('@')!=string::npos ){ printf("third_name[%s] is a email or a mobilenum", third_name.c_str()); return -1; }</span> 查到一个string 字符串中知否有 *