给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

def main():#来自力扣第3题
    def lengthOfLongestSubstring(s: str) -> int:
        d = {}
        start = -1
        m = 0
        for i in range(len(s)):
            #if s[i] in d:
            if s[i] in d and d[s[i]] > start:# s = "tmmzuxt" 最后这个t 只能走else
                start = d[s[i]]#否则 start = d[s[i]] = i, 所以需要这个and d[s[i]]>start
                d[s[i]] = i
                print(d[s[i]],d,i,s[i])
            else:
                d[s[i]] = i
                if i - start > m:
                    m = i - start
        return (m)
    s = "tmmzuxt"
    g = lengthOfLongestSubstring(s)
    print(g)

if __name__ == '__main__':
    main()

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

class Solution:
    def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
        dummy = ListNode(0, head)
        #dummy = head
        first = head
        second = dummy
        for i in range(n):
            first = first.next
        while first:
            first = first.next
            second = second.next
        
        second.next = second.next.next
        return dummy.next

def stringToListNode(input):
    print(input)
    #numbers = json.loads(input)
    numbers = [bb for bb in input.split()]
    #print(numbers,"*1")
    #numbers = input
    dummyRoot = ListNode(0)
    ptr = dummyRoot
    for number in numbers:
        ptr.next = ListNode(number)
        ptr = ptr.next
    ptra = ptr
    #print()
    print(listNodeToString(ptra),"*3")
    #print(listNodeToString(ptra),"*3")
    ptr = dummyRoot.next
    #print()
    #print(listNodeToString(ptr),"*4")
    return ptr

def listNodeToString(node):
    if not node:
        return "[]"
    result = ""
    while node:
        result += str(node.val) + ", "
        node = node.next
    #return result[:-2]
    return result

def main():
    while True:
        try:
            head = stringToListNode(str([1,2,3,4]))
            n = 2
            ret = Solution().removeNthFromEnd(head, n)
            out = listNodeToString(ret)
            print(out)
        except StopIteration:
            break

#if __name__ == '__main__':
#    main()
main()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值