[容易]翻转字符串
题目来源: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 };
-------------------------------------------------
原创博客 转载请注明出处http://www.cnblogs.com/hslzju
-------------------------------------------------