Leetcode刷题记录_20181027

Posted autoyzz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode刷题记录_20181027相关的知识,希望对你有一定的参考价值。

205. Isomorphic Strings

判断两个字符串的是否同形。

利用字典,字符串中每一个不同的字符对应一个数字,最后数字相同则表示字符串同形。

更简单的办法:判断len(set(s)) len(set(t)) len(set(zip(s,t))) 是否相等

技术分享图片
 1 class Solution(object):
 2     def isIsomorphic(self, s, t):
 3         """
 4         :type s: str
 5         :type t: str
 6         :rtype: bool
 7         """
 8         dict1 = {}
 9         dict2 = {}
10         k =1
11         for i in s:
12             if i not in dict1:
13                 dict1[i] = k
14                 k +=1
15         k = 1
16         for i in t:
17             if i not in dict2:
18                 dict2[i] = k
19                 k +=1
20         list1 = []
21         list2 = []
22         for i in s:
23             list1.append(dict1[i])
24         for i in t:
25             list2.append(dict2[i])
26         return list1 == list2
27                 
View Code

206. Reverse Linked List 

将链表翻转。

技术分享图片
 1 class Solution(object):
 2     def reverseList(self, head):
 3         """
 4         :type head: ListNode
 5         :rtype: ListNode
 6         """
 7         a = head
 8         temp1 = None
 9         temp2 = None
10         while a:
11             temp2 = a.next
12             a.next = temp1
13             temp1 = a
14             a = temp2
15         return temp1
View Code

217. Contains Duplicate 

判断列表中是否存在相同数字

创建字典,在II问题中也可使用

219.Contains Duplicate II  

判断列表中相同数字的索引差值不大于给定整数k。

遍历列表,建立列表元素与索引的字典,如有相同,判断差值是否小于k。

技术分享图片
 1 class Solution(object):
 2     def containsNearbyDuplicate(self, nums, k):
 3         """
 4         :type nums: List[int]
 5         :type k: int
 6         :rtype: bool
 7         """
 8         #超时方法,不可用
 9         """n = len(nums)
10         i = 0 
11         for j in range(k):
12             while i+j+1 < n:
13                 if nums[i] == nums[i+j+1]:
14                     return True
15                 else:
16                     i +=1
17             i = 0
18         return False"""
19         dict1 = {}
20         for i in range(len(nums)):
21             if nums[i] in dict1:
22                 if i - dict1[nums[i]] <= k:
23                     return True
24                 else:
25                     dict1[nums[i]] = i
26             else:
27                 dict1[nums[i]] = i
28         return False
View Code

 

以上是关于Leetcode刷题记录_20181027的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode刷题记录_20181023

Leetcode刷题记录_20181026

LeetCode刷题记录_38. 报数

LeetCode刷题记录_有效的括号

LeetCode刷题记录_反转整数

LeetCode刷题记录_最长公共前缀