在 Python 中逐字元比較兩個字串

Vaibhav Vaibhav 2022年5月17日
在 Python 中逐字元比較兩個字串

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 avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

LinkedIn GitHub

相關文章 - Python String