点击打开链接
/*
时间:2014.1.31
目的:题目1199:找位置 http://ac.jobdu.com/problem.php?pid=1199
*/
#include <stdio.h>
#include <string.h>
int main()
{
char str[101];
int flag[101], i, j, k, f;
while(gets(str))
{
memset(flag,0,sizeof(int)*101);
for(i = 0;str[i];i++)
{
f = 0;
if(flag[i] == 1)//如果已经标记访问过就跳过
continue;
for(j = i + 1;str[j];j++)//访问指针i后的字符是否与i的字符有相同的,如果相同则输出
{
if(str[j] == str[i])
{
if(f == 0)//f用来输出第一个i位置的字符 ,也表示有多个相同字符,换行时需要用
{
printf("%c:%d",str[i],i);
f = 1;//控制以后不用再输出i位置的字符
}
printf(",%c:%d",str[j],j);
flag[j] = 1;
}
if(f == 1 && j == (strlen(str) - 1))//只有当有多个字符 ,且访问到最后一个字符时就换行
printf("\n");
}
}
}
return 0;
}
/*
------------------
abcaaAB12ab12 思路:1. 利用两个工作指针i,j,i用来指着当前位置,j用来循环i后的字符
a:0,a:3,a:4,a:9 2.
b:1,b:10
1:7,1:11
2:8,2:12
------------------
*/
题目1199:找位置