2005年华中科技大学计算机保研机试真题 找位置
题目1199:
1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 #include <vector> 5 using namespace std; 6 struct node{ 7 vector<int> v; 8 }; 9 node map['z'+1]; 10 int main(){ 11 string s; 12 while(cin>>s){ 13 int i; 14 for(i=0;i<s.length();i++){ 15 map[s[i]].v.push_back(i); 16 } 17 for(i=0;i<s.length();i++){ 18 if(map[s[i]].v.size()>1){ 19 int j=0; 20 cout<<s[i]<<":"<<map[s[i]].v[j]; 21 //map[s[i]].v.erase(map[s[i]].v.begin()); 22 for(j=1;j<map[s[i]].v.size();j++){ 23 cout<<","<<s[i]<<":"<<map[s[i]].v[j]; 24 //map[s[i]].v.erase(map[s[i]].v.begin()); 25 } 26 //map[s[i]].v.clear(); 27 //cout<<map[s[i]].v.size()<<endl; 28 for(j=map[s[i]].v.size();j;j--){ 29 map[s[i]].v.erase(map[s[i]].v.begin()); 30 } 31 //cout<<map[s[i]].v.size()<<endl; 32 cout<<endl; 33 } 34 } 35 for(i=0;i<s.length();i++){ 36 while(map[s[i]].v.size()){ 37 map[s[i]].v.erase(map[s[i]].v.begin()); 38 } 39 } 40 } 41 return 0; 42 }
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:1958
解决:957
- 题目描述:
-
对给定的一个字符串,找出有重复的字符,并给出其位置,如:abcaaAB12ab12
输出:a,1;a,4;a,5;a,10,b,2;b,11,1,8;1,12, 2,9;2,13。
- 输入:
-
输入包括一个由字母和数字组成的字符串,其长度不超过100。
- 输出:
-
可能有多组测试数据,对于每组数据,
按照样例输出的格式将字符出现的位置标出。
- 样例输入:
-
abcaaAB12ab12
- 样例输出:
-
a:0,a:3,a:4,a:9 b:1,b:10 1:7,1:11 2:8,2:12
- 提示:
-
1、下标从0开始。
2、相同的字母在一行表示出其出现过的位置。