在 Python 中逐字元比較兩個字串
Vaibhav Vaibhav
2022年5月17日
Python 是一種通用語言,它使得處理整數型別、字串型別、浮點型別、雙精度型別等資料成為一項相對無縫的任務,其易於理解的語法和強大的 API 在幕後工作。
本文將討論一些涉及字串的此類任務。任務是使用 Python 逐個字元地比較兩個字串。
在 Python 中逐字元比較字串
在 Python 中,我們可以使用 for
迴圈或 while
迴圈逐個字元地比較兩個字串。
由於兩個字串可以有不同的長度,我們必須確保我們只考慮較小的長度來迭代字串進行比較。為了進行比較,我們將計算位於相同索引處的兩個字串中相同字元的數量。
請注意,這只是比較兩個字串的一種方法。
可以計算字串中每個字元出現的頻率以進行比較或計算漢明距離。漢明距離是字串中字元不同的索引個數。
下面的 Python 程式碼實現了我們上面討論的內容。
def compare_strings(a, b):
if a is None or b is None:
print("Number of Same Characters: 0")
return
size = min(len(a), len(b)) # Finding the minimum length
count = 0 # A counter to keep track of same characters
for i in range(size):
if a[i] == b[i]:
count += 1 # Updating the counter when characters are same at an index
print("Number of Same Characters:", count)
compare_strings("homophones", "homonyms")
compare_strings("apple", "orange")
compare_strings("apple", "applepie")
compare_strings("pasta", "pizza")
compare_strings(None, None)
compare_strings(None, "valorant")
compare_strings("minecraft", None)
輸出:
Number of Same Characters: 4
Number of Same Characters: 0
Number of Same Characters: 5
Number of Same Characters: 2
Number of Same Characters: 0
Number of Same Characters: 0
Number of Same Characters: 0
上面程式碼的時間複雜度是 O(n)
,空間複雜度是 O(1)
,因為我們只儲存了計數和最小長度。
上面的程式碼使用了一個 for
迴圈。如上所述,我們還可以使用 while
迴圈來實現相同的功能。相同的參考下面的程式碼。
def compare_strings(a, b):
if a is None or b is None:
print("Number of Same Characters: 0")
return
size = min(len(a), len(b)) # Finding the minimum length
count = 0 # A counter to keep track of same characters
i = 0
while i < size:
if a[i] == b[i]:
count += 1 # Updating the counter when characters are same at an index
i += 1
print("Number of Same Characters:", count)
compare_strings("homophones", "homonyms")
compare_strings("apple", "orange")
compare_strings("apple", "applepie")
compare_strings("pasta", "pizza")
compare_strings(None, None)
compare_strings(None, "valorant")
compare_strings("minecraft", None)
輸出:
Number of Same Characters: 4
Number of Same Characters: 0
Number of Same Characters: 5
Number of Same Characters: 2
Number of Same Characters: 0
Number of Same Characters: 0
Number of Same Characters: 0
上面程式碼的時間複雜度是 O(n)
,空間複雜度是 O(1)
,因為我們只儲存了計數和最小長度。
作者: Vaibhav Vaibhav