leetcode第5题
5.Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.
题目大意就是求出一个字符串的最大回文子串,思路借鉴了讨论区中的某位同学,就是用两个标记依次往两头延伸,如给定a,b,判断s[a-1]与s[b+1]是否相等,若相等则–a, ++b在进行判断,直到不等为止,得出maxlen=b-a+1,代码运行时间4ms。代码如下:
1 | string longestPalindrome(string s) |
代码中间一步关键步骤使程序时间减少了很多,因为在b的那个循环中间,如果b有变化则代表b前面有相同的字符,此步骤跳过了那些重复的步骤,因为在相同的字符里面肯定是最大长度的一个子串,如aceeeecd,在这个步骤中,若使用i += 1;则当ab指向s[2]时,由于s中有重复e,因此b经过调整指向了最后一个e,得出最大子串ceeeec,然后i += 1;b还是指向最后一个e,这其中很多步骤都是相当在这个回文子串在找一个最大回文子串,因此不可能得出比刚才那个还要大的回文子串,故此处i = b+1;为关键步骤。