输出相同元素所在的位置
输入包括一个由字母和数字组成的字符串,其长度不超过100。下标从0开始输出,相同的字母在一行表示出其出现过的位置。示例:
输入:
abcaaAB12ab12 输出:
a:0,a:3,a:4,a:9
b:1,b:10
1:7,1:11
2:8,2:12
顺序查找的思路,每个元素遍历一遍数组。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char str;
while(~scanf("%s", str))
{
int len = strlen(str);
for(int i = 0; i < len; i++)
{ //每过一趟都将该字符以及与该字符相同的字符置为'*'
int count = {0};//与当前字符相同的置1
int flag = 0; //记录是否有重复字符,若有置1
char ch = str;
for(int j = i+1; j < len; j++)
{
if(str == ch)
{
count = 1;
count = 1;
}//有相同的字符,将ch和该字符的标记都置为1
}//一趟结束,输出
int is_first = 1; //第一个输出的前面不打逗号,接下来的都在输出前加逗号
for(int k = 0; k < len; k++)
{
if((count == 1) && is_first && str != '*')
{
printf("%c:%d", str, k);
str = '*';
is_first = 0;
continue;
}
else if((count == 1) && (is_first == 0) && str != '*')
{
printf(",%c:%d", str, k);
str = '*';
continue;
}
}
if(is_first == 0)
printf("\n");
}
}
}
写完之后我才发现count数组没有任何作用,用is_first就可以判断是否有重复元素了。
页:
[1]