A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈泽 中级黑马   /  2020-2-27 17:20  /  1904 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.  给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
    示例:
[Shell] 纯文本查看 复制代码
给定 nums = [2, 7, 11, 15], target = 9

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

    第一种解法:
[Python] 纯文本查看 复制代码
class Solution(object): 
    def twoSum(self, nums, target):  
    if len(nums) < 2:  
        return  
    for i in range(0, len(nums) - 1):  
        for j in range(i + 1, len(nums)):  
            if nums[i] + nums[j] == target:  
                return [i, j]  
  
  
nums = [2, 7, 11, 15]  
s = Solution()

    第二种解法:
[AppleScript] 纯文本查看 复制代码
def solution(nums, target): 
    # 新建立一个空字典用来保存数值及其在列表中对应的索引  
    dict1 = {}  
    # 遍历一遍列表对应的时间复杂度为O(n)  
    for i in range(0, len(nums)):  
        # 相减得到另一个数值  
        num = target - nums[i]  
        # 如果另一个数值不在字典中,则将第一个数值及其的索引报错 在字典中  
        # 因为在字典中查找的时间复杂度为O(1),因此总时间复杂度为O(n)  
        if num not in dict1:  
            dict1[nums[i]] = i  
        # 如果在字典中则返回  
        else:  
            return [dict1[num], i]  
  
  
nums = [2, 7, 11, 15]  
  
  
print(solution(nums, 26))

2.给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
   示例 1:
       输入: "abcabcbb"
       输出: 3
       解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。


   示例 2:
       输入: "bbbbb"
       输出: 1
       解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。


   示例 3:
       输入: "pwwkew"
       输出: 3
       解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
       请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。


[Python] 纯文本查看 复制代码
class Solution:

    def lengthOfLongestSubstring(self, s: str) -> int:
        len_str=len(s)
        #存储所有非重复子序列的长度
        final_len=[]
        #对序列进行遍历,未重复时进行字符串的拼接,重复时跳出拼接,进行下一轮的遍历
        for i in range(len_str):
            data1=s[i]
            for j in range(i+1,len_str):
                if s[j] not in data1:
                    data1=data1+s[j]
                else:
                    break
            final_len.append(len(data1))
        #判断当存储的非重复子序列为空时,s是为空格,为空格字符时,非重复字符长度为1,为空字符时,非重复的字符长度为0
        if final_len==[]:
            if s=='':
                final_len.append(0)
            else:
                final_len.append(1)

        return(max(final_len))

s = Solution()
print(s.lengthOfLongestSubstring("chenze"))


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马