LeetCode&&Longest Palindromic Substring
来源:互联网 发布:艾默生网络能源 编辑:程序博客网 时间:2024/05/21 17:36
题目描述:
假设字符串s的最大长度为1000,而且有唯一的最长回文,找到s的最长回文子字符串;
思路一:
- 首先写出判断一个字符串是不是回文的方法
- 遍历整个字符串,找出其中可以做回文中间数的那些字符(两个连续字符相等,或者字符两边的数相等),再进一步判段是不是回文,并找出该段回文的长度
class Solution {public: string longestPalindrome(string s) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance will be reused for each test case. int len = s.length(); int temp_longest = 1; string temp_str; //遍历从第二个开始直到倒数第二个字符串 //找出所有符合回文中间字符串特征的字符串 for(int i=1;i<len-1;i++){ if(s[i]==s[i-1]){ int j; string substr; for(j=1;j<i;j++){ //一找到的中间值为轴,向两端扩展,判断子字符串是否为回文 //向前取到i-1-j位,向后取到i+j位 //所以子字符串的长度为因(i+j)-(i-1-j)+1=2j+2 substr = s.substr(i-1-j,2*j+2); //当向后超过数组长度 if((i+j)>len-1){ break; } if(!isPalindrome(substr)){ break; } } //所取字符串的长度为(i+j-1)-((i-1)-(j-1))+1;由于包含开始的数本身,所以加一 int temp=2*j; if(temp>temp_longest){ temp_longest=temp; //从(i-1)-(j-1)开始取, temp_str=s.substr(i-j,temp); } } if(s[i-1]==s[i+1]){ int j; for(j=1;j<i;j++){ //原理同上,只是向前取到i-j,向后取到i+j //字串长度为2j+1; string substr = s.substr(i-j,2*j+1); if((i+j)>len-1){ break; } if(!isPalindrome(substr)){ break; } } //所取字符串长度为(i+j-1)-(i-j-1)+1 int temp=2*j+1; if(temp>temp_longest){ temp_longest=temp; //从(i-1)-(j-1)开始取, temp_str=s.substr(i-j,temp); } } } return temp_str; } bool isPalindrome(string s){ int len = s.length(); for(int i = 0 ;i<=len-1;i++){ if(s[i]!=s[len-1-i]){ return false; } } return true; }};
- LeetCode: Longest Palindromic Substring
- LeetCode Longest Palindromic Substring
- LeetCode: Longest Palindromic Substring
- [Leetcode] Longest Palindromic Substring
- [LeetCode] Longest Palindromic Substring
- Leetcode : Longest Palindromic Substring
- [LeetCode]Longest Palindromic Substring
- leetcode Longest Palindromic Substring
- LeetCode-Longest Palindromic Substring
- [LeetCode] Longest Palindromic Substring
- Longest Palindromic Substring leetcode
- LeetCode Longest Palindromic Substring
- LeetCode - Longest Palindromic Substring
- LeetCode -- Longest Palindromic Substring
- LeetCode | Longest Palindromic Substring
- LeetCode: Longest Palindromic Substring
- [LeetCode]Longest Palindromic Substring
- leetcode Longest Palindromic Substring
- 《我不想与我不能》 ——刘未鹏
- Ruby on rails 实战圣经:Routing 路由
- Cocos2d-x教程(1)-让我们来学习一些传说中的概念
- 约瑟夫环
- 倒转英文句子
- LeetCode&&Longest Palindromic Substring
- mysql字符编码的设置以及mysql中文乱码的解决方法
- How to Reduce Parse Time Cpu (文档 ID 156262.1)
- 照猫画虎-1
- 设计模式之Frameworks 框架
- 事务、触发器、视图、索引
- inkscape导出前加个白色背景
- CRM上线之路 走上了CRM实施顾问-第81天上班 -第17周
- Failed to create the Java Virtual Machine.