算法:
1、翻轉字符串:首尾指針交換
2、部分翻轉:兩部分分別翻轉,再整體翻轉。共翻轉三次得到部分翻轉
3、本題就是找每一個位置進行部分翻轉,檢查是否是另一字符串的翻轉。
class ReverseEqual {
public:
string reverse(string str){
if(str == "")
return str;
int start = 0;
int end = str.size() - 1;
while (start < end){
char tmp = str[start];
str[start] = str[end];
str[end] = tmp;
start ++;
end --;
}
return str;
}
bool checkReverseEqual(string s1, string s2) {
// 輸入的字符串如果有空,那麼必須都空纔是反轉字符串,否則不是
if(s1 == "" || s2 == ""){
return s1 == "" && s2 == "";
}
if(s1 == s2)
return true;
char first = s2[0];
string part;
string least = s1;
for (int i = 0; i < s1.size(); ++i) {
if(s1[i] == first){
string swap_part = reverse(part);
string swap_least = reverse(least);
string now = swap_part + swap_least;
now = reverse(now);
if(now == s2)
return true;
}
part += s1[i];
least.erase(0,1);
}
return false;
}
};