题目大意:给一串字符++–….,要依次把所有两个连续++翻转成–,求所有可能的输出.
 
解题思路:一次遍历,遇到两个连续的++就翻转,输出.同时保证不影响原串,用一个tmp来操作.  注意:这里有一个奇怪的bug,若不先求出s的长度n,而是在for循环中设终止条件为 s.length()-1,则遇到空串(长度为0)会报错  代码:
 
class Solution {
public:
    
vector<string> generatePossibleNextMoves(
string s) {
        
vector<string> res;
        
int n = s.length();
        
for (
int i = 
0; i < n-
1; i++) {
            
if (s[i] == 
'+' && s[i+
1] == 
'+') {
                
string tmp = s;
                tmp[i] = 
'-';
                tmp[i+
1] = 
'-';
                res.push_back(tmp);
            }
        }
        
return res;
    }
};