列表

详情


WY36. 交错01串

描述

如果一个01串任意两个相邻位置的字符都是不一样的,我们就叫这个01串为交错01串。例如: "1","10101","0101010"都是交错01串。
小易现在有一个01串s,小易想找出一个最长的连续子串,并且这个子串是一个交错01串。小易需要你帮帮忙求出最长的这样的子串的长度是多少。

输入描述

输入包括字符串s,s的长度length(1 ≤ length ≤ 50),字符串中只包含'0'和'1'

输出描述

输出一个整数,表示最长的满足要求的子串长度。

示例1

输入:

111101111

输出:

3

原站题解

C 解法, 执行用时: 1ms, 内存消耗: 256KB, 提交时间: 2020-07-07

#include <stdio.h>
#include <string.h>
int main ()
{
  char str[50];
  scanf("%s",str);//gets(str);
  int len;
  len=strlen(str); 
  int count=1;
  int max=1;
      for(int i=0;i<len-1;i++)
      {
          if(str[i]!=str[i+1])
          {
              count++; 
          }   
          else
              count=1;
          if(max>count)
              max=max;
          else
              max=count;
    }
        printf("%d",max);
  }

C++ 解法, 执行用时: 1ms, 内存消耗: 368KB, 提交时间: 2017-08-24

#include<iostream>
#include<fstream>
#include<string>
#include <algorithm>
using namespace std;
//子串
void countOfSubstring(string s){
    int maxCount = 0;
    for (int i =1; i<s.length(); i++) {
            int j=i-1;
            while(i < s.length()){
                if (s[i] != s[i - 1]){
                    i++;
                }else{
                    break;
                 }
            }
            if ((i-j)>maxCount) {
                maxCount=i-j;
            }
        
        }
    cout<<maxCount<<endl;
    
}
int main()
{
    string str;
    cin>>str;
    countOfSubstring(str);
    return 0;
 }

上一题