leecode常见题 ---01.05.07.11.15

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)]

  1. 最长回文子串

在这里插入图片描述

遍历走一遍,每个点作为一次的中心,寻找回文串:

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.相减如果,谁离相减结果更近留下谁,因为小的话可能更远,但是大的话可以确保。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值