-
题目描述
如果字符串的一个子串(其长度大于1)的各个字符均相同,则称之为等值子串。试设计一算法,输入字符串S,以“!”作为结束标志。如果串S中不存在等值子串,则输出信息“无等值子串”,否则求出(输出)一个长度最大的等值子串。
输入格式
输入字符串s
输出格式
找出其中长度最大的等值子串
样例输入content_copy
asdf123!
样例输出content_copy
无等值子串
- 见代码:
-
#include<stdio.h> int main() { int s[1000]={0}; //记录字符串的ASCII值 char str[1000]=""; //录入字符 char ch; scanf("%c",&ch); str[0] = ch; int x = ch-'0'; s[0] = x; int y = 1; int max = 1; while(ch!='!') { scanf("%c",&ch); str[y] = ch; x = ch-'0'; s[y++] = x; } int p,q; for(int i = 0;i<y;i++) { int cnt = 1; if(s[i]==s[i+1]) //如果前后ASCII值相等就再一层循环 { p = i; //记录等值子串的位置 int j = i+1; cnt++; for(j = i+1;j<y;j++) { if(s[j]==s[j+1]) cnt++; else break; } i = j; } if(max<cnt) //如果目前最大值小于cnt { max = cnt; //更换最大值 q = p; //更换最大值对应等值子串位置 } } if(max<=1) printf("无等值子串\n"); else { for(int i = q;i<q+max;i++) printf("%c",str[i]); //输出 } }
1430: 等值子串(串)
最新推荐文章于 2023-02-19 00:12:55 发布