1. 程式人生 > >演算法65----字串

演算法65----字串

題目:

  1. 判斷兩個字串是否互為變形詞
  2. 字串中數字子串的求和
  3. 去掉字串中連續出現k個0的子串
  4. 判斷兩個字串是否互為旋轉詞
  5. 將整數字符串轉成整數值
  6. 替換字串中連續出現的指定字串
  7. 字串的統計字串
  8. 判斷字元陣列中是否所有的字元都只出現過一次
  9. 在有序但含有空的陣列中查詢字串
  10. 字串的調整與替換
  11. 翻轉字串
  12. 陣列中兩個字串的最小距離
  13. 新增最少字元使字串整體都是迴文字串
  14. 括號字串的有效性和最長有效長度
  15. 公式字串求值

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

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

思路:

 1. 首先比較兩個字串的長度,長度不同肯定是false。

 2. 如果長度相同,新建一個字典,用以儲存每個字元出現次數。

 3. 遍歷str1,在str1 中出現一次就加1,遍歷str2,在str2 中出現一次就減1,最後遍歷完str2沒有出現負值,就返回true。

程式碼:

from collections import Counter
def IsDeformation(str1,str2):
    if not str1 or not str2 or len(str1) != len(str2):
        return False
    countstr1 
= Counter(str1) for s2 in str2: if s2 in countstr1: countstr1[s2] -= 1 if countstr1[s2] < 0: return False else: return False return True str1 = '1234' str2 = '2313' IsDeformation(str1,str2)