jack的字符串问题

题目描述

阿操最讨厌写字符串的题目,看到眼前密密麻麻的字母就烦。这件事的起因就是很久很久以前的一次找重复字符的位置。 现在有一个字符串,我们要找出其中的重复的字符并输出这些字符和字符的位置,如:aabcaabc22 输出 a,0;a,1;a,4;a,5,b,2;b,6,c,3;c,7;2,8;2,9

输入

输入一行字符串(字符串中只含数字和字母)。其长度不超过100。包括多组输入。

输出

根据样例的格式将重复出现的字符位置输出

样例输入 复制
aabcaabc22
样例输出 复制
a:0,a:1,a:4,a:5
b:2,b:6
c:3,c:7 
2:8,2:9

题目思路:

         输入字符串后,从头开始的字符并且没有被收录的字符寻找与之相同的字符并保存相同字符的下标到末尾。若不单有开始的一个字符则输出所有的下标。

完整代码:

#include<stdio.h>
main(){
	char a[106]={0},c;
	int n,num[50]={0},i,j,k;
	while(scanf("%s",a)!=EOF){
		i=0;
		for(;a[i];i++){//字符串每个字符进行判断 
			if(a[i]!=1)//如果字符没有被改为1则是还没有归纳的字符 
			{c=a[i];a[i]=1;//a[i]变成1 a[i]字符被归纳 
				k=1;num[0]=i;//k表a[i]字符的个数,num数组把a[i]字符的下标收集 
				for(j=i+1;a[j];j++)//寻找更多的a[i]字符 
				{
					if(a[j]==c){
						num[k++]=j;
						a[j]=1;
					}
					
				}
				if(k>1){//k>1表示a[i]字符是重复的 
					for(j=0;j<k-1;j++)
				printf("%c:%d,",c,num[j]);
				printf("%c:%d",c,num[k-1]);
				printf("\n");
				}
				
			}
		}
	}
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值