唉,要开始好好准备面试了。
今天看到一道题目:
一个字符串,删除其中部分字母,能够组成的最长的回文串,是多长?
这道经典的题目,我居然开始的时候没想出来!虽然想到了动态规划,但是居然想到了首尾不同的话,尾部还要遍历,平白增加了非常多的编程复杂度。。。。。而实际上,只要简单的首尾比较然后动态规划就可以了!这是top-down,容易栈比较多。bottom-up的话,可以先看长度为1的结果,然后长度为2,然后长度继续增加。
如果又忘了。。。这里面有top-down的解法介绍:http://blog.csdn.net/ly52352148/article/details/51447142 (代码没看,思想就是这样的)
要好好加油了!
https://leetcode.com/problemset/algorithms/
里面search palindrome,可以看到一些题目:
。 |
409
|
Longest Palindrome | 44.5% | Easy | ||
。 | 336 | 24.7% | Hard | |||
。 | 267 | 31.0% | Medium | |||
。 | 266 | 55.1% | Easy | |||
。 | 234 | 31.6% | Easy | |||
。 | 214 | 23.0% | Hard | |||
。 | 132 | 23.4% | Hard | |||
。 | 131 | 30.8% | Medium | |||
。 | 125 | 25.3% | Easy | |||
。 | 9 | 34.1% | Easy |
先看的这道题目:
214 | Shortest Palindrome | 23.0% | Hard |
我的解法在:
/Users/baidu/Documents/Data/Interview/leetcode/shortest-palindrome
太好了,实在太好了。要好好看。
然后看的这道题目:
409 | 44.5% | Easy |
解法在:http://www.cnblogs.com/charlesblc/p/5929656.html 原题太简单了,如果不发散想想其他题目,没什么好看的。
131 | Palindrome Partitioning | 30.8% | Medium |
也看了。我的方法是递归。里面有提到一种dp+dfs的解法。
132 | Palindrome Partitioning II | 23.4% | Hard |
这一道题目,难。
看了我自己的解法,是从中间发散的,还是很好的。
另外,我觉得借鉴上一道题目的思路,把每一个i.j是否palin的情况都列出来,然后dfs来得出最后一个元素所在的最少的分割,应该也能做出来。
266 | Palindrome Permutation | 55.1% | Easy |
locked的项目,较简单,思路比较清晰。
267 | Palindrome Permutation II | 31.0% | Medium |
也是locked。解法里面先用map统计,然后用递归来减除并处理。也可以不用递归,那就要用栈。
9 | Palindrome Number | 34.1% | Easy |
解法真的蛮巧妙的。开始我就没想到。
336 | Palindrome Pairs | 24.7% | Hard |
难怪这是Hard难度的。开始的时候,以为循环遍历就可以了。其实不行的,会超时,还是要用map来查。
125 | Valid Palindrome | 25.3% | Easy |
用到了stl里面的transform
234 | Palindrome Linked List | 31.6% | Easy |
题目还是蛮好的。我也想起来了。