两数之和&无重复字符最长字符串

一、两数之和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

 

思路:用字典模拟哈希表查找

def twoSum(nums, target):
    hashmap={}
    for ind,num in enumerate(nums):
        hashmap[num] = ind
    for i,num in enumerate(nums):
        j = hashmap.get(target - num)
        if j is not None and i!=j:
            return [i,j]

 

二、无重复字符的最长子串

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

def lengthOfLongestSubstring(s):
    if s == '':
        return 0
    if len(s) == 1:
        return 1

    def find_left(s, i):
        tmp_str = s[i]
        j = i-1
        while j>=0 and s[j] not in tmp_str:
            tmp_str += s[j]
            j -= 1
        return len(tmp_str)
    length = 0
    for i in range(0, len(s)):
        length = max(length, find_left(s, i))
    return length

 

posted @ 2020-09-28 21:52  Achilles_Heel  阅读(185)  评论(0编辑  收藏  举报