📜  比较两个字符串忽略空格 (1)

📅  最后修改于: 2023-12-03 15:40:40.423000             🧑  作者: Mango

比较两个字符串忽略空格

在实际开发中,我们经常需要比较两个字符串,但是两个字符串在文本内容上虽然一致,但是其中的空格可能会不同,这时我们需要忽略空格进行比较。本文将介绍如何进行忽略空格比较。

方法一:去掉所有空格再比较

第一种方法是在比较之前将两个字符串中的所有空格全部去掉,然后再进行比较。这种方法代码简单,易于理解,在实际开发中使用较为广泛。

def compare_strings(str1: str, str2: str) -> bool:
    str1 = str1.replace(" ", "")
    str2 = str2.replace(" ", "")
    return str1 == str2

上述代码中,我们首先使用 replace 方法将 str1str2 中的所有空格替换为空字符串,然后再使用 == 进行比较。这样就可以忽略空格进行比较了。

方法二:逐个字符比较

第二种方法是逐个字符比较,遇到空格跳过。这种方法相对于第一种方法而言比较耗时,但是相比于去掉所有空格再比较,这种方法的优点在于可以保留字符串中的空格。

def compare_strings(str1: str, str2: str) -> bool:
    i, j = 0, 0
    while i < len(str1) and j < len(str2):
        if str1[i] == " ":
            i += 1
            continue
        if str2[j] == " ":
            j += 1
            continue
        if str1[i] != str2[j]:
            return False
        i += 1
        j += 1
    while i < len(str1) and str1[i] == " ":
        i += 1
    while j < len(str2) and str2[j] == " ":
        j += 1
    return i == len(str1) and j == len(str2)

上述代码中,我们使用了两个指针 ij 分别指向两个字符串中的字符。当遇到空格时,我们就跳过空格继续比较下一个字符。最后我们还需要再次遍历两个字符串,判断是否有剩余的空格未被遍历到,如果有,则说明两个字符串并不相等。

综上所述,两种方法各有优缺点,具体需要根据实际情况选择。