leetcode Longest Palindromic Substring
2015-09-22 16:24
489 查看
Longest Palindromic Substring
My SubmissionsQuestion
Solution
Total Accepted: 70417 Total
Submissions: 338025 Difficulty: Medium
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.
Show Tags
Show Similar Problems
Have you met this question in a real interview?
Yes
No
Discuss
算法转自http://www.cnblogs.com/caterpillarofharvard/articles/4245626.html,但是由于本人理解力切佳,所以就在纸上画了画。
代码如下:
// test5LongestPalindromicSubstring.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "string" #include "vector" using std::string; using std::vector; string longPalindrome(string s) { if (s.size() < 2) return s; int center=0, right=0; int max = 0; int j = 0; int n = s.size(); vector<int> len; int currentlen = 0; len.push_back(1); for (int i = 1; i < n; i++) { if (i <= right) { j = 2 * center - i; if (len[j] + i < center) { currentlen = len[j]; len.push_back(currentlen); continue; } } currentlen = 0; int l = i, r = i; while (l >= 0 && r<n && s[l] == s[r])//注意此处,最后一个判定条件必须放到后面的后面,否则将会出错。 { currentlen++; r++; l--; } len.push_back(currentlen); if (currentlen > max) { center = i; right = center + currentlen - 1; max = currentlen; } } string result = ""; int left = center - max + 1; if (left % 2 == 0) left++; while (left<right) { result += s[left]; left+=2; } return result; } string longestPalindrome(string s) { if (s.size() < 2) return s; string temp = "#"; for (int i = 0; i < s.size(); i++) { temp += s[i]; temp += '#'; } return longPalindrome(temp); } int _tmain(int argc, _TCHAR* argv[]) { string s = longestPalindrome("aaaba"); return 0; }
相关文章推荐
- 一只简单的网络爬虫(基于linux C/C++)————支持动态模块加载
- Java for LeetCode 230 Kth Smallest Element in a BST
- 用exp无法导出空表解决方法/用exp导出数据时表丢失原因
- python实现smtp发送邮件类-直接调用就好
- Android Jpush的集成
- Word公式和文字的显示位置调整
- 两段异或和的最大值 二进制TRIE图表达式 XOR CodeChef Nikitosh and xor
- jQuery 实现最简单的form表单提交 Loding 功能
- offsetLeft与style.left区别
- ASP.NET本质论阅读----线程与异步
- poj2586
- Quartz2D-图形上下文栈
- 树莓派与继电器
- plupload 使用案例 及 中文文档
- iOS---XCode7 + IOS9 问题及解决方案
- Building System之编译前的准备工作
- MySQL的备份与还原
- 蜻蜓fm面试
- 一键安装lnmp之php
- 对Django框架架构和Request/Response处理流程的分析