[容易]翻转字符串

题目来源:http://www.lintcode.com/zh-cn/problem/reverse-words-in-a-string/

先贴上错误代码,测试案例没有全部通过。需要对字符串中的多余空格进行处理。

 1 class Solution {
 2 public:
 3     /**
 4      * @param s : A string
 5      * @return : A string
 6      */
 7     string reverseWords(string s) {
 8         // write your code here
 9         s.append(" ");
10         string result;
11         int idex;
12 
13         for(int i=0;i<s.length();i=idex+1)
14         {
15             idex=s.find(" ",i);
16             string::iterator p1,p2;
17             p1=s.begin()+i;
18             p2=s.begin()+idex;
19             reverse(p1,p2);
20         }
21         reverse(s.begin(),s.end()-1);
22         s=s.substr(0,s.length()-1);
23         return s;
24     }
25 };

修改之后,可以accept的程序如下:

 1 class Solution {
 2 public:
 3     /**
 4      * @param s : A string
 5      * @return : A string
 6      */
 7     string reverseWords(string s) {
 8         // write your code here
 9         s.append(" ");
10         string ss;
11         int len=s.length()-1;
12         int i=0,idex=0;
13         while(i<len)
14         {
15             while(i<=len&&s[i]==' ')
16             {
17                 i++;
18             }
19             if(i>len) break;
20             if(ss.length()!=0)
21                 ss.push_back(' ');
22             idex=s.find(" ",i);
23             string::iterator p1,p2;
24             p1=s.begin()+i;
25             p2=s.begin()+idex;
26             reverse(p1,p2);
27             ss.append(s,i,idex-i);
28             i=idex;
29         }
30         reverse(ss.begin(),ss.end());
31         s=ss.substr(0,ss.length());
32         return s;
33     }
34 };

可以accept的程序2如下:

 1 class Solution {
 2     /**
 3      * @param s : A string
 4      * @return : A string
 5      */
 6 public:
 7     string reverseWords(string s) {
 8         string ss;
 9         int i = s.length()-1;
10         while(i>=0)
11         {
12             while(i>=0&&s[i] == ' ')
13             {
14                 i --;
15             }
16             if(i<0) break;
17             if(ss.length()!=0)
18                 ss.push_back(' ');
19             string temp ;
20             for(;i>=0&&s[i]!=' ';i--)
21                 temp.push_back(s[i]);
22             reverse(temp.begin(),temp.end());
23             ss.append(temp);
24         }
25         s=ss;
26         return s;
27     }
28 };
posted @ 2016-05-13 21:04  Pearl_zju  阅读(128)  评论(0编辑  收藏  举报