W
e
l
c
o
m
e
: )

leetcode 每日签到 409. 最长回文串

题目:

最长回文串

给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。

在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。

注意:
假设字符串的长度不会超过 1010。

示例 1:

输入:
"abccccdd"

输出:
7

解释:
我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。
来源:leetcode
链接:https://leetcode-cn.com/problems/longest-palindrome/
代码:

class Solution:
    def longestPalindrome(self, s: str) -> int:
        a=collections.Counter(s)
        num=0
        count=0
        if  len(a)==1:
            return  len(s)
        for i in a:
            if a[i]%2==0:
                num+=a[i]
            elif a[i]>1:
                num+=a[i]-1
                count=1
            else:
                count=1
        return num+count if len(s)!=0 else 0

大神代码:

class Solution:
    def longestPalindrome(self, s):
        ans = 0
        count = collections.Counter(s)
        for v in count.values():
            ans += v // 2 * 2
            if ans % 2 == 0 and v % 2 == 1:
                ans += 1
        return ans

leetcode 1:a+b

题目:

两数之和

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

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

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

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
思路:用两层for循环超时,方法是遍历nums,用一个哈希表(字典)来存储nums中不满足target-nums[i]==哈希表.key的值与下标
例:nums=[3,2,4],target=6
遍历到3时,检测字典里是否存在6-3这个值。因为是第一次字典是空的,于是把{3:0}存入字典
遍历到2时,检测字典里是否存在6-2这个值。字典里没有,于是把{2:1}存入
遍历到4时,检测字典里是否存在6-4这个值。字典里存在,于是把{2:1}与这个nums[3]=4的下标增加到列表当中返回
代码

#两数之和
class Solution:
    def twoSum(self, nums, target):
        a=[]
        ha={}
        b=0
        for i in range(len(nums)):
            for j in list(ha.keys()):
                 if target-nums[i]==j:
                    a.append(ha[j])
                    a.append(i)
                    return a
            ha[nums[i]]=i
a=Solution()
nums = [3,2,4]
target = 6
print(a.twoSum(nums,target))
posted @ 2020-03-19 10:48  rmxob  阅读(142)  评论(0)    收藏  举报