WY74. 橡皮泥斑马
描述
小易很喜欢斑马,因为它们身上黑白相间的花纹。输入描述
一个字符串s,只包含字母'b'和字母'w',分别表示黑色和白色的橡皮泥块。输出描述
一个整数,表示改变之后最长的连续的黑白相间的子串的长度。示例1
输入:
bwbwb
输出:
5
示例2
输入:
wwb
输出:
3
C 解法, 执行用时: 2ms, 内存消耗: 308KB, 提交时间: 2021-09-15
#include<stdio.h> #include<string.h> int main() { char c[100001]; scanf("%s",&c[0]); int len = strlen(c); c[len] = c[0]; int max=0; for(int i=0;i<(len+2);i++) { int temp = 0; while(c[i] != c[i+1] && i<len) { i++; temp++; } if(temp>max) max = temp; } printf("%d",(max+1)); return 0; }
C++14 解法, 执行用时: 2ms, 内存消耗: 420KB, 提交时间: 2020-08-30
#include <stdio.h> //#include <string> #include <string.h> //using namespace std; const int N=1e5; char str[N+5]; int max(int a,int b) { return a>b?a:b; } int main() { //string str; scanf("%s",&str); int len= strlen(str); if(len==1) puts("0"); else if(len==2) { if(str[0]==str[1]) { puts("0"); }else { puts("2"); } }else { int headLen=1,tailLen=1; int start=0,end=len-1; for(;start<end;start++) { if(str[start]==str[start+1]) break; headLen++; } if(start==end) printf("%d\n",headLen); else { for(;end>start;end--) { if(str[end]==str[end-1]) break; tailLen++; } int res=max(headLen,tailLen); int tmpLen=1; for(start++,end--;start<end;start++) { if(str[start]==str[start+1]) { res=max(res, tmpLen); tmpLen=1; }else tmpLen++; } if(str[0]!=str[len-1]) res=max(res, headLen+tailLen); printf("%d\n",res); } } return 0; }