字符串题目描述一个只含小写英文字母的字符串s,其字符依次为 a1,a2,…,an。 求一个字符串t,长度与s相同,其第i位的字符为s的第1∼i位出现字符数量最多的字符,如果多个字符的数量相同,则取最早达到这个数量的的字符。 比如s=“abba“,则t=“aabb“。第2位时,a和b都是1次,a先达到1,所以第2位是a;第4位时,a和b都是2次,b先达到2次,所以是b。 输入格式存在多个样例。 每行一个字符串s,长度不超过1000。 输出格式依次每行输出一个样例的结果 样例输入abba abcd 样例输出aabb aaaa | ||
Sample Input | ||
Sample Output | ||
Source |
#include<stdio.h>
#include<string.h>
int main(){
char str[1005];
int len;
while(scanf("%s",str)!=EOF){
len = strlen(str);
char str1[len];
int max=0;
char maxchar=str[0];
for(int i=0;i<len;i++){
int count=0;
for(int j=0;j<=i;j++){
if(str[i]==str[j]) count++;
}
if(count>max){
max=count;
maxchar=str[i];
}
str1[i]=maxchar;
}
if(strlen(str1)>len){
str1[strlen(str1)-1]='\0';
str1[strlen(str1)]='\0';
}
for(int i=0;i<len;i++){
printf("%c",str1[i]);
}
printf("\n");
}
}
思路:两层for循环寻找数组前i个字符中最多的,用count记录每个字符的值,根据max的比较适时更新,输出max对应的字符即可