判斷字符串是不是一個字符串的翻轉

算法:
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;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章