0. 原理

贪心算法(英语:greedy algorithm),又称贪婪算法,是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。

1. 最长回文串(leetcode_409)

给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。 在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。

输入: “abccccdd”

输出:

7 解释:

我们可以构造的最长的回文串是”dccaccd”, 它的长度是 7。

注意collections.Counter使用方法

  1. import collections
  2. class Solution(object):
  3. def longestPalindrome(self, s):
  4. """
  5. :type s: str
  6. :rtype: int
  7. """
  8. ans = 0
  9. count = collections.Counter(s)
  10. for v in count.values():
  11. ans += v // 2 * 2
  12. if ans % 2 == 0 and v % 2 == 1:
  13. ans += 1
  14. return ans

2. 迷宫问题