首页 > 其他 > 详细

正序扫描字符串问题

时间:2014-03-22 21:47:27      阅读:588      评论:0      收藏:0      [点我收藏+]

题目

Leetcode Reverse Words in a String

九度 1525:子串逆序打印

 

思路

1. 做过几道正序处理字符串的题目, 这些题目的特点是状态比较多, 假如都写在 mian 函数里可能导致思路混乱. 所以总结了一下解决此类题目的框架

2. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
void(int) gotoFlow1() {
    ...
}
 
void (int) gotoFlow2() {
    ...
}
 
int i;
 
for(i = 0; i < s.size(); i ++) {
    if(s[i] == xxxx) { // condition 1
        gotoFlow1();
        continue;
    }
 
     
    if(i >= s.size())
        break;
 
    if(s[i] == uuuu) { // condition 2
        gotoFlow2();
        continue;
    }
 
}

  

3. 这个框架外层用 while 函数, 只判断, 不对 i 进行自增操作. 而 gotoFlow 内部则使用 for 循环, 减少代码行数. gotoFlow 函数可以返回值也可以返回 void. 另外, 为了使思路更加顺畅, 最好不要在原始的字符串上操作.

 

代码一 Reverse Words in a String

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <algorithm>
using namespace std;
 
string gotoSpace(int &i, const string &s) {
    while(i < s.size() && s[i] == ‘ ‘)
        i ++;
    return " ";
}
 
string gotoWord(int &i, const string &s) {
    string cps;
    int st = i;
    while(i < s.size() && s[i] != ‘ ‘) {
        i ++;
    }
    cps = s.substr(st, i-st);
    reverse(cps.begin(), cps.end());
    return cps;
}
 
class Solution {
public:
    void reverseWords(string &s) {
         
        int i = 0;
        while(i < s.size() && s[i] == ‘ ‘)
            i ++;
 
        s = s.substr(i);
 
        i = s.size() - 1;
        while(i >= 0 && s[i] == ‘ ‘)
            i --;
        s = s.substr(0, i+1);
 
        string cps;
        i = 0;
 
        while(i < s.size()) {
            if(s[i] == ‘ ‘) {
                cps.append(gotoSpace(i, s));
            }
             
            if( i >= s.size())
                break;
 
            if(s[i] != ‘ ‘) {
                cps.append(gotoWord(i, s));
            }
        }
 
        reverse(cps.begin(), cps.end());
        s = cps;       
    }
};

  

正序扫描字符串问题,布布扣,bubuko.com

正序扫描字符串问题

原文:http://www.cnblogs.com/zhouzhuo/p/3617879.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!