题解 | #找位置#

找位置

http://www.nowcoder.com/practice/e3b2cc44aa9b4851bdca89dd79c53150

没有用什么高级方法,纯设计的

#include<iostream>
#include<cstring>
using namespace std;
int main(){
	string a; //接收的字符串 
	while(cin>>a){
		bool ed[a.length()];	//该字符是否已重复 -数组 
		bool huan = false;		//是否换行符输出 
		for(int i=0;i<a.length();i++) ed[i]=false;	//初始化为false 
		for(int i=0;i<a.length();i++){	//循环扫描字符串 
			if(ed[i]==true) continue;	//如果已经重复过了,则跳过 
			for(int j=i+1;j<a.length();j++){ 	//这次遍历只判断是否有重复 
				if(a[j]==a[i]){
					if(huan==true) cout<<endl;	//如果换行标志位true,则换行,第一次是FALSE,所不会输出换行 
					cout<<a[i]<<':'<<i;		//输出"被重复"的值及其位置 
					j=a.length();	//改变j值让循环结束 
					huan=true;		//换行标志设置位ture 
				}
			}
			for(int j=i+1;j<a.length();j++){	//	再次遍历,这次将输出和目标值重复的值的位置 
				if(a[j]==a[i]) {	//如果重复	 
					cout<<','<<a[j]<<':'<<j;	//输出重复值和位置 
					ed[j]=true;		//设置已重复标志位true,当i循环到这个值时,将会跳过 
				}
			} 
		}
		cout<<endl;
	}
	return 0;
}
全部评论

相关推荐

10-15 09:13
已编辑
天津大学 soc前端设计
点赞 评论 收藏
分享
11-05 07:29
贵州大学 Java
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务