1.知识点:
1.enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
思路1: 不用暴力破解法,恶心
思路2: 下面的
class Solution(object):
def twoSum(self, nums, target):
“”"
:type nums: List[int]
:type target: int
:rtype: List[int]
“”"
for index,value in enumerate(nums):
res = target - value
if res in nums and nums.index(res) != index:
return [index,nums.index(res)]
- 最长回文子串
遍历走一遍,每个点作为一次的中心,寻找回文串:
class Solution(object):
def longestPalindrome(self, s):
"""
:type s: str
:rtype: str
"""
if s =="":
return ""
st = list(s)
length = []
final_vaild = []
for i in range (len(st)):
middle_left =i
middle_right=i
while middle_left != -1 and middle_right != len(st) and st[middle_left] == st[middle_right]:
middle_left -= 1
middle_right += 1
length.append(middle_right-middle_left+1)
final_vaild.append(s[middle_left+1:middle_right])
if len(st) - i != 1:
mid_left = i
mid_right = i+1
while mid_left != -1 and mid_right !=len(st) and st[mid_left] == st[mid_right]:
mid_left -=1
mid_right +=1
length.append(mid_right-mid_left+1)
final_vaild.append(s[mid_left+1:mid_right])
return final_vaild[length.index(max(length))]
写代码的反思:
1.过程中遇到了一个死循环,主要是在while那里,while有限定条件,但是我的迭代的地方,并没有不断的缩小,这样会导致,代码走进死循环。
2.while X and X: 表示只有都满足才能走下去,一个不满足就不能走,while X or X: 有一个满足就走下去,只有都不满足了才不走
07.整数反转:
题目不难,注意几个用字符串的技巧:
第一字符串的反转:
s1[::-1]
s1[:-1]
s1[1:]
s1[1::]
首先面积:短的决定,越远越好,矮的高,且远就好。
头尾开始,算面积,然后短向前移动,再算面积,为何不移动长的呢?因为移动长的那么可能不变,也可能变小。本来移动的时候距离就近了,这时候在移动长的变小了,那肯定变小,但是如果移动短的呢?会变大。也可能不变,因为短的可以变长。也可以变短,也可以不变。直到他们相遇就停止了。
1.先排序可以知道大小的相对位置,
2.每次固定一个,从左右两边走,直到相遇为止
3.相减如果,谁离相减结果更近留下谁,因为小的话可能更远,但是大的话可以确保。