翻转游戏:给定一个只包含两种字符的字符串:+和-,你和你的小伙伴轮流翻转"++“变成”–"。当一个人无法采取行动时游戏结束,另一个人将是赢家。
编写一个函数,计算字符串在一次有效移动后的所有可能状态。
样例
样例1
输入: s = "++++"
输出:
[
"--++",
"+--+",
"++--"
]
样例2
输入: s = "---+++-+++-+"
输出:
[
"---+++-+---+",
"---+++---+-+",
"---+---+++-+",
"-----+-+++-+"
]
思路:遍历s,如果出现两个连续的符号‘+’,则将s放进temp中,并将temp中对应的两个‘+’换成‘-’,放进vector即可。
class Solution {
public:
/**
* @param s: the given string
* @return: all the possible states of the string after one valid move
*/
vector<string> generatePossibleNextMoves(string &s) {
// write your code here
int len=s.size();
string temp;
vector<string> result;
for (int i = 0; i < len-1; i++) {
/* code */
if(s[i]=='+'&&s[i+1]=='+')
{
temp=s;
temp.erase(temp.begin()+i,temp.begin()+i+2);
temp.insert(temp.begin()+i,2,'-');
result.push_back(temp);
}
}
return result;
}
};