📌  相关文章
📜  比较表示为链表的两个字符串(1)

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

比较表示为链表的两个字符串

当我们要比较两个字符串是否相等时,可以将字符串表示为链表,然后依次比较节点的值。这种方法比较直观易懂,有助于理解链表的操作。

下面是比较链表表示的两个字符串的代码片段:

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

def compareStrings(str1: str, str2: str) -> bool:
    # 将字符串表示为链表
    def makeList(s: str):
        dummy = ListNode(-1)
        cur = dummy
        for c in s:
            cur.next = ListNode(ord(c))
            cur = cur.next
        return dummy.next

    list1 = makeList(str1)
    list2 = makeList(str2)

    # 按节点依次比较值
    while list1 and list2:
        if list1.val != list2.val:
            return False
        list1 = list1.next
        list2 = list2.next

    # 如果其中一个链表还有剩余节点,则不相等
    return list1 is None and list2 is None

该代码定义了一个ListNode类来表示链表节点,同时定义了一个makeList函数将字符串转换为链表。比较两个链表的过程中,按节点依次比较值,如果发现不相等的节点,则返回False表示不相等。最后判断两个链表是否都到达了None节点,如果是则返回True表示相等,否则返回False表示不相等。

使用该代码可以轻松比较链表表示的两个字符串,从而更好地理解链表操作。