Palindrome Pairs

題目來源
給一個字符串數組,求能組成回文串的兩個元素的。
就是比較煩,但是倒不是很難。
代碼如下:

class Solution {
public:
    vector<vector<int>> palindromePairs(vector<string>& words) {
        int len = words.size();
        unordered_map<string, int> maps;
        vector<vector<int>> res;
        for (int i=0; i<len; i++) {
            if (words[i] == "")
                continue;
            maps[words[i]] = i;
        }
        for (int i=0; i<len; i++) {
            int wordLen = words[i].size();
            if (wordLen == 0)
                for (int j=0; j<len; j++) {
                    if (i != j && isPalindrome(words[j])) {
                        res.push_back(vector<int>{i, j});
                        res.push_back(vector<int>{j, i});
                    }   
                }
            for (int j=wordLen; j>=1; j--) {
                string left = words[i].substr(0, j);
                string right = words[i].substr(j);
                bool isleft = isPalindrome(left);
                bool isright = isPalindrome(right);
                reverse(left.begin(), left.end());
                reverse(right.begin(), right.end());
                if (isright && maps.count(left) != 0 && maps[left] != i) {
                    vector<int> pair{i, maps[left]};
                        res.push_back(pair);
                }
                if (isleft && maps.count(right) != 0 && maps[right] != i) {
                    vector<int> pair{maps[right], i};
                        res.push_back(pair);
                }
            }
        }
        return res;
    }
    
    bool isPalindrome(string &str)
    {
        if (str == "")
            return true;
        int p1 = 0, p2 = str.size() - 1;
        while (p1 < p2) {
            if (str[p1] != str[p2])
                return false;
            p1++;
            p2--;
        }
        return true;
    }
};
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Given a list of unique words, find all pairs of distinct ...
    葉孤陳閱讀 2,146評論 0 0
  • 一、JS前言 (1)認識JS 也許你已經了解HTML標記(也稱為結構),知道了CSS樣式(也稱為表示),會使用HT...
    凜0_0閱讀 2,790評論 0 8
  • 第5章 引用類型(返回首頁) 本章內容 使用對象 創建并操作數組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,265評論 0 4
  • 果然當初信誓旦旦地說自己要堅持每天碼字的豪言壯語已經被我吃了。 端午假期第二天去了一直想去的雍和宮拜佛,順路還去了...
    嗎咿吖嘿閱讀 298評論 0 0
  • 粒子效果(復制層) 開始 重繪 自定義一個DrawView綁定控制器的viewawakeFromNib中添加手勢p...
    彼岸的黑色曼陀羅閱讀 222評論 0 0