字符串处理:九度OJ-题目1199:找位置

先来给出题目链接 http://ac.jobdu.com/problem.php?pid=1199

这是一道水题,但是自己很久没敲代码的原因,20分钟才搞定

 

开始的时候,脑子发热,看错题了,样例给的输出里面没有A和B,我还以为字符串里的字符都转换成小写的,回头才看出来。

分析:

主要就是字符统计  1.现用sum来控制整体的处理单个字符的次数。

                        2.在第一层循环里面,再用第二层循环处理每个不同的字符。

                        3.在处理不同字符的之前,先要排除掉没有重复的字符。

---------------------------------------------------------------华丽丽的分割线----------------------------------------------------------------

以下是供参考的代码:

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 using namespace std;
 5 const int maxn=100+5;
 6 char str[maxn];
 7 int flag[maxn];
 8 
 9 int main()
10 {
11     while(scanf("%s",str)!=EOF)
12     {
13         char first=str[0];
14         int sum=0;
15         int len=strlen(str);
16         //for(int i=0;i<len;i++)
17           //str[i]=tolower(str[i]);
18         memset(flag,0,sizeof(flag));
19         while(sum<len)
20         {
21             for(int k=0;k<len;k++)
22             if(flag[k]==0)
23             {
24                 first=k;
25                 break;
26             }
27             int counter=0,h=0;
28             while(h<len)
29             {
30                 if(str[h]==str[first])
31                     counter++;
32                 h++;
33             }
34             if(counter==1)
35             {
36                 flag[first]=1;
37                 sum++;
38                 continue;
39             }
40             for(int j=first;j<len;j++)
41              if(flag[j]==0&&(str[j]==str[first]))
42              {
43                 printf(j==first?"%c:%d":",%c:%d",str[j],j);
44                 flag[j]=1;
45                 sum++;
46              }
47             cout<<endl;
48         }
49     }
50     return 0;
51 }

 

posted @ 2014-02-28 22:52  Pacific-hong  阅读(322)  评论(0编辑  收藏  举报