python 回文排列

2021-10-09 05:25:39 字數 1086 閱讀 6452

給定乙個字串,編寫乙個函式判定其是否為某個回文串的排列之一。

回文串是指正反兩個方向都一樣的單詞或短語。排列是指字母的重新排列。

回文串不一定是字典當中的單詞。

示例1:

輸入:"tactcoa"

輸出:true(排列有"tacocat"、"atcocta",等等)

滿足題目條件:字串中只有不多於1個的總數為奇數的字元。

一、位運算

class

solution

:def

canpermutepalindrome

(self, s:

str)

->

bool

: result =

0for c in s:

result ^=1

<<

ord(c)

return result &

(result -1)

==0

ord():取字元asii碼

把字串中每個字元轉化為1向左移n位的位運算,n為這個字元和字元『a』的距離。

每位異或,最終為1 的則該字元個數為奇數,最後計算是否只有1個或0個位數為1的。

二、雜湊表

class

solution

:def

canpermutepalindrome

(self, s:

str)

->

bool

: cnt =

c_j =0if

len(s)==0

:return

true

for i in s:

cnt[i]

= cnt.get(i,0)

+1for i in cnt:

if(cnt.get(i))%

2==1:

c_j +=

1if c_j >1:

return

false

else

:return

true

Leetcode 回文排列

給定乙個字串,編寫乙個函式判定其是否為某個回文串的排列之一。回文串是指正反兩個方向都一樣的單詞或短語。排列是指字母的重新排列。回文串不一定是字典當中的單詞。示例1 輸入 tactcoa 輸出 true 排列有 tacocat atcocta 等等 參考leetcode題解 可以組成回文排列有兩種情況...

LeetCode 回文排列

回文串是指正反兩個方向都一樣的單詞或短語。排列是指字母的重新排列。回文串不一定是字典當中的單詞。示例1 輸入 tactcoa 輸出 true 排列有 tacocat atcocta 等等 leetcode cn.com problems palindrome permutation lcci 解題思...

python集合全排列 python全排列,遞迴

全排列 用遞迴方法 全排列 1 列表只有乙個元素 a 它的全排列只有a。2 列表有兩個元素 a,b 它的全排列為 a,b b,a 3 列表有三個元素 a,b,c 交換ab,b,a,c 對ac進行全排列 4 列表有n個元素,將第乙個元素固定,對剩下n 1個元素進行全排列。將第乙個元素依此與其他元素交換...