容易
比較字符串
比較兩個字符串A和B沉馆,確定A中是否包含B中所有的字符堕伪。字符串A和B中的字符都是 大寫字母
您在真實的面試中是否遇到過這個題?
樣例
給出 A = "ABCD" B = "ACD"士骤,返回 true
給出 A = "ABCD" B = "AABC"辩越, 返回 false
注意
在 A 中出現(xiàn)的 B 字符串里的字符不需要連續(xù)或者有序。
解題思路
題目換個說法就是,在不管字符順序的情況下,字符串B是否為A的子集.
想到上一節(jié)中寫的countChars
可以用來對字符串中字符進(jìn)行計數(shù),就能達(dá)到忽略字符次序的效果,直接引用過來
- 對字符串進(jìn)行計數(shù)得到計數(shù)dir
- 遍歷B的計數(shù)dir與A中的記錄進(jìn)行對比
- 遍歷dir可以使用Python內(nèi)置的
items()
函數(shù)
- 遍歷dir可以使用Python內(nèi)置的
- 無論是A中沒有對應(yīng)記錄還是對應(yīng)記錄小于B 都返回
False
否則返回True
參考答案
class Solution:
"""
@param A : A string includes Upper Case letters
@param B : A string includes Upper Case letters
@return : if string A contains all of the characters in B return True else return False
"""
def compareStrings(self, A, B):
# write your code here
countA = self.countChars(A)
countB = self.countChars(B)
for key, value in countB.items():
try:
if value > countA[key]:
return False
except KeyError:
return False
return True
def countChars(self, stringToCount):
result = []
for item in range(ord("z") - ord("A")+1):
result.append(0)
for item in stringToCount:
result[ord(item) - ord("A")] += 1
return str(result)