python版**如下,我自己手寫:
def
is_deformation
(str1, str2):
if str1 is
none
or str2 is
none
or len(str1) != len(str2):
return
false
i, map = 0, [0]
while i <= 256:
i += 1
for i in range(0, len(str1)):
map[ord(str1[i])] += 1
for i in range(0, len(str2)):
if map[ord(str2[i])] == 0:
return
false
return
true
解題思路:
1、首先判斷字串長度是否一致,然後遍歷str1,str2,假使字元數量為ascii字元256個。一旦map中出現-1,返回報錯。最後不需要再次遍歷map中是否為全0,直接返回 true。
2、如果字元型別大大多於256,要採用雜湊表。
3、時間複雜度為兩次遍歷 str1,所以為 o(len(str1)),空間複雜度,申請了乙個整形變數 i,乙個map陣列,所以空間複雜度為 o(len(map))。
體會
1、python寫演算法感覺不如c好,python裡自帶的 列表資料型別不方便初始化空陣列,非得來乙個迴圈才能解決問題。增加了時間複雜度。
2、python的陣列就是個鍊錶,而非陣列。靈活的鍊錶結構,可以在此基礎上構建樹結構。
判斷兩個字串是否互為變形詞
題目 給定兩個字串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 ...