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

2021-10-03 04:18:34 字數 2404 閱讀 8695

【題目】

給定兩個字串str1和str2,如果str1和str2**現的字元種類一樣且每種字元出現的次數也一樣,那麼str1與str2互為變形詞

請實現函式判斷兩個字串是否互為變形詞

是變形詞返回true,不是變形詞返回false。

【舉例】

str1=「123」,str2=「231」,返回true。

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

統計字串str1的種類及數量,再與str2進行對比。

比較字串長度,長度不同,則返回false;

統計str1,字元及對應數量遞增;

對比str2,字元及對應數量遞減;

對比過程中,發現字元種類不存在或者數量遞減至負數,則返回false;

對比完成,兩者字串長度相同,又不存在字元種類不同及數量不對齊情況,則說明兩者互為變形詞,返回true。

若字串只包含ascii字元,可建立長度為256的陣列統計其數量(索引為字元在ascii上對應的編碼),見is_deformed_ascii_str(s1, s2)

若字串包含廣義unicode字元,可建立雜湊表(python對應實現為字典),儲存鍵值對(字元種類——數量),見is_deformed_str(s1, s2)

# 判斷兩個由ascii字元構成的字串是否互為變形詞

defis_deformed_ascii_str

(s1, s2):if

len(s1)==0

orlen

(s2)==0

orlen

(s1)

!=len

(s2)

:return

false

arr =[0

for i in

range

(256)]

for i in

range

(len

(s1)):

arr[

ord(s1[i])]

+=1for i in

range

(len

(s2)):

arr[

ord(s2[i])]

-=1if arr[

ord(s2[i])]

<0:

return

false

return

true

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

defis_deformed_str

(s1, s2):if

len(s1)==0

orlen

(s2)==0

orlen

(s1)

!=len

(s2)

:return

false

d =# 字元-次數 字典

for i in

range

(len

(s1)):

d[s1[i]

]= d.get(s1[i],0

)+1for i in

range

(len

(s2)):

d[s2[i]

]= d.get(s2[i],0

)-1if d[s2[i]

]<0:

return

false

return

true

# 簡單測試

if __name__ ==

'__main__'

:print

(is_deformed_ascii_str(

'123'

,'231'))

# true

print

(is_deformed_ascii_str(

'123'

,'2331'))

# false

print

(is_deformed_ascii_str(

'1231'

,'2131'))

# true

print

(is_deformed_str(

'123'

,'231'))

# true

print

(is_deformed_str(

'123'

,'2331'))

# false

print

(is_deformed_str(

'1231'

,'2131'))

# 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 123 str2 132 true str1 123 str2 1332 false public boolean isde string st...