碼不停題3 6 回文對

2021-09-12 02:27:10 字數 1671 閱讀 4602

給定一組唯一的單詞, 找出所有不同 的索引對(i, j),使得列表中的兩個單詞, words[i] + words[j] ,可拼接成回文串。

示例 1:

輸入: [「abcd」,「dcba」,「lls」,「s」,「sssll」]

輸出: [[0,1],[1,0],[3,2],[2,4]]

解釋: 可拼接成的回文串為 [「dcbaabcd」,「abcddcba」,「slls」,「llssssll」]

暴力解法

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;}}

;

解法2 (來自

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;}}

;

c++使用總結

set map有序 (用樹) unordered_set unordered_map無序 (用hash)

vector初始化

vectorint>> v;

v.push_back()

;// 可以

v1v2都是vector v1.push_back(v2)發生了什麼?

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...