判斷兩個字串是否是變形詞

2021-09-24 23:48:04 字數 1415 閱讀 2482

問題: 給定兩個字串str1和str2,如果str1和str2**現的字元種類一樣並且每種字元出現的次數也一樣,那麼str1與str2互為變形詞。請實現函式判斷兩個字串是否互為變形詞。

舉例:str1 = 「123」,str2 = 「231」,返回true 

str1 = 「123」,str2 = 「2331」,返回false

基本思路:

如果兩個字串的長度不相同,直接返回false

假設出現的字元的編碼值在0~255之間,即是ascii編碼,那麼先申請乙個長度為256的整型陣列array,arr[a] = b,表示字元a出現的次數是b,依次遍歷字串str1,統計每種字元出現的數量,相當於統計每種字元的詞頻。

遍歷字串str2,每遍歷到乙個字元都在array陣列中把詞頻減1,如果減少之後的值小於0,直接返回false。如果遍歷完str2,array中的值也沒有成為負數,則返回true。

為什麼只考慮詞頻最後是否有負數?因為如果最後有的詞頻為正數,說明str1的長度一定大於str2,這種情況在步驟一的時候就已經剔除了。

如果字元的範圍不在0~255,則可以利用雜湊表來代替陣列。

def isdeformation(str1,str2):

"""列表實現方式

"""if str1 == none or str2 == none or len(str1) != len(str2):

return false

chas = [0 for i in range(256)]

for item in str1:

chas[ord(str1)] +=1

for item in str2:

chas[ord(str1)] -=1

if chas[ord(str1)] < 0:

return false

return true

def isdeformation(str1,str2):

"""字典實現方式

"""if str1 == none or str2 == none or len(str1) != len(str2):

return false

chas = dict()

for item in str1:

if item not in chas:

chas[item] = 1

else:

chas[item] = chas[item] + 1

for item in str2:

if item not in chas:

return false

else:

chas[item] = chas[item] - 1

if chas[item] < 0:

return false

return true

判斷兩個字串是否互為變形詞

題目 給定兩個字串str1和str2,如果str1和str2中出現的字元種類一樣且每種字元出現的次數也一樣,則str1和str2互為變形詞。請實現函式判斷兩個字串是否互為變形詞。舉例 str1 123 str2 231 返回true str1 123 str2 2331 返回false。難度 inc...

判斷兩個字串是否互為變形詞

給定兩個字串s1,s2,如果s1,s2 現的字元種類一樣且每種字元出現的次數一樣,則s1,s2互為變形詞。判斷s1,s2是否為變形詞。如遍歷s1,統計每個字元個數,遍歷s2,每個字元,s1字元個數統計對應字元 1,若減到負數,說明個數不匹配,返回false。遍歷完成則返回true from coll...

判斷兩個字串是否互為變形詞

題目 給定兩個字串str1和str2,如果str1和str2 現的字元種類一樣且每種字元出現的次數也一樣,那麼str1與str2互為變形詞。請實現函式判斷兩個字串是否互為變形詞。是變形詞返回true,不是變形詞返回false。舉例 str1 123 str2 231 返回true。str1 123 ...