比較兩個字串是否有相同的字母且相同字母個數相等

2021-09-25 23:58:39 字數 1248 閱讀 8336

問題

若給兩組字串如:

s1 = 『public relations』

s2 = 『crap built on lies』

如果忽略大小寫與空格,s1可以通過打亂順序得到s2,則返回true,否則返回false

s1 = 'public relations'

s2 = 'crap built on lies'

import re

#變為小寫字母

s1 = s1.lower()

s2 = s2.lower()

#正規表示式,去除空格

s1 = re.sub(r"\s+", "", s1, flags=re.unicode) #\s 匹配任意的空白符; + 重複1次或多次

s2 = re.sub(r"\s+", "", s2, flags=re.unicode)

正規表示式參考 正規表示式

#方法一:使用sorted()函式

def anagram1(s1,s2):

s1 = s1.replace(' ','').lower()

s2 = s2.replace(' ','').lower()

return sorted(s1) == sorted(s2)

#方法二

def anagram2(s1,s2):

s1 = s1.replace(' ','').lower()

s2 = s2.replace(' ','').lower()

if len(s1) != len(s2):

return false

count = {}

# fill dictionary with first string

for letter in s1:

if letter in count:

count[letter] += 1

else:

count[letter] = 1

for letter in s2:

if letter in count:

count[letter] -= 1

else:

count[letter] = 1

for k in count:

if count[k] != 0:

return false

return true

判斷兩個字串是否相同

data segment mess1 db computer software mess2 db computer software data ends code segment assume ds data,cs code start mov ax,data mov ds,ax mov es,ax...

翻轉字串和比較兩個字串是否相同

奉獻兩個小題,練習繼續 題目描述 請實現乙個演算法,在不使用額外資料結構和儲存空間的情況下,翻轉乙個給定的字串 可以使用單個過程變數 給定乙個string inistring,請返回乙個string,為翻轉後的字串。保證字串的長度小於等於5000。測試樣例 this is nowcoder 返回 r...

翻轉字串和比較兩個字串是否相同

奉獻兩個小題,練習繼續 題目描述 請實現乙個演算法,在不使用額外資料結構和儲存空間的情況下,翻轉乙個給定的字串 可以使用單個過程變數 給定乙個string inistring,請返回乙個string,為翻轉後的字串。保證字串的長度小於等於5000。測試樣例 this is nowcoder 返回 r...