給定一組唯一的單詞, 找出所有不同 的索引對(i, j),使得列表中的兩個單詞, words[i] + words[j] ,可拼接成回文串。
示例 1:
輸入: [「abcd」,「dcba」,「lls」,「s」,「sssll」]
輸出: [[0,1],[1,0],[3,2],[2,4]]
解釋: 可拼接成的回文串為 [「dcbaabcd」,「abcddcba」,「slls」,「llssssll」]
暴力解法
解法2 (來自class solution
}return true;
}
vectorint>>
palindromepairs
(vector
& words)
// 做乙個簡單驗證 減少字串拼接的消耗
if( flag || words[i][0
]== words[j]
[words[j]
.size()
-1])
}if( flag || words[j][0
]== words[i]
[words[i]
.size()
-1])
}}}return ans;}}
;
c++使用總結class solution
for(
int i =
0; i < words.
size()
;++i));
}// 如果某個字串能找到乙個分割點,分割點前的部分是回文,後半部分翻轉後也在陣列裡,可組成一對。如果後部分是回文,前半部分翻轉後在陣列裡,可組成一對。
auto a = s.
find
(len)
;// 只在長度比s小的找 set是有序集合
for(
auto it = s.
begin()
; it != a;
++it));
}if(isvalid
(t, d, len -1)
&& m.
count
(t.substr(0
, d)))
);}}
}return res;
} bool isvalid
(string t,
int left,
int right)
return true;}}
;
set map有序 (用樹) unordered_set unordered_map無序 (用hash)
vector初始化
v1v2都是vector v1.push_back(v2)發生了什麼?vectorint>> v;
v.push_back()
;// 可以
push_back會對傳遞進來的引數進行一次拷貝(呼叫拷貝建構函式) 當vector呼叫拷貝建構函式時,容器裡面的物件都會被拷貝乙份(淺拷貝)到新的容器裡
reverse(t.begin(), t.end());
前閉後開
string substr (size_t pos = 0, size_t len = npos) const;
每日一題 leetcode 336 回文對
回文對 難度困難123 給定一組 互不相同 的單詞,找出所有不同 的索引對 i,j 使得列表中的兩個單詞,words i words j 可拼接成回文串。示例 1 輸入 abcd dcba lls s sssll 輸出 0,1 1,0 3,2 2,4 解釋 可拼接成的回文串為 dcbaabcd ab...
字典樹 336 回文對 PYTHON
本身就是回文串單詞 palidstr 翻轉單詞記錄位置 rev words 結果 res for idx,word in enumerate words rev words word 1 idx 利用列表推導式的形式進行逆置,同時利用賦值的方法規避掉 的元素 為了防止陣列裡有空字串 if word ...
LeetCode Python刷題 9 回文數
leetcode 9.回文數 題目 判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。示例1 輸入 121 輸出 true 示例2 輸入 121 輸出 false 示例3 輸入 10 輸出 false def ispalindrome x falseflag 0...