leetcode-214. Shortest Palindrome
来源:互联网 发布:我只是数据txt书包网 编辑:程序博客网 时间:2024/06/05 21:40
题目链接:点击打开链接
解:
从左向右遍历,根据回文串的特点向两边展开,取最短的回文串。
代码C++:
#include <iostream>#include <string>#include <math.h>using namespace std; string shortestPalindrome(string s) { int len = s.length(); int minLen = 2*len-1; int site = 0; for(int i=0; i<=len/2; i++){ int j=i,k=i; int flag = 1; int l = 0; while(j>=0 && k<len){ if(s[j] != s[k]){ flag = 0; break; } j--; k++; } if(i >= len/2){l = (i+1)*2-1; } else { l = (len-i)*2-1;} if(flag && l<minLen ) { minLen = l; site = i; } j=i-1; k=i; flag = 1; while(j>=0 && k<len){ if(s[j] != s[k]){ flag = 0; break; } j--; k++; } if(i > len/2){l = (i)*2;} else {l = (len-i)*2;} if(flag && l<minLen ) { minLen = l; site = i; } } string str = ""; if(minLen % 2 == 0){ if(site <= len/2){ int tl = len-site; str = s.substr(site,len); for(int i=0; i<tl/2; i++){ int tmp = str[i]; str[i] = str[tl-i-1]; str[tl-i-1] = tmp; } str += s.substr(site,len); }else{ int tl = site; str = s.substr(0,site); for(int i=0; i<tl/2; i++){ int tmp = str[i]; str[i] = str[tl-i-1]; str[tl-i-1] = tmp; } str = s.substr(0,site)+str; } }else{ if(site+1 <= len/2){ int tl = len-site-1; str = s.substr(site+1,len); for(int i=0; i<tl/2; i++){ int tmp = str[i]; str[i] = str[tl-i-1]; str[tl-i-1] = tmp; } str += s.substr(site,len); }else{ int tl = site; str = s.substr(0,site); for(int i=0; i<tl/2; i++){ int tmp = str[i]; str[i] = str[tl-i-1]; str[tl-i-1] = tmp; } str = s.substr(0,site+1)+str; } } //cout << site << " " << minLen <<endl; return str; }int main(){ //cout << shortestPalindrome("abb") << endl; return 0;}
0 0
- [leetcode] 214.Shortest Palindrome
- LeetCode 214. Shortest Palindrome
- leetcode 214. Shortest Palindrome
- LeetCode 214. Shortest Palindrome
- LeetCode 214. Shortest Palindrome
- leetcode.214. Shortest Palindrome
- leetcode-214. Shortest Palindrome
- 【LeetCode】214. Shortest Palindrome
- [LeetCode]214. Shortest Palindrome
- Leetcode 214. Shortest Palindrome
- LeetCode 214. Shortest Palindrome
- LeetCode 214. Shortest Palindrome
- leetcode 214. Shortest Palindrome
- leetcode 214. Shortest Palindrome
- [Leetcode]214. Shortest Palindrome@python
- (Java)LeetCode-214. Shortest Palindrome
- LeetCode hard 214. Shortest Palindrome
- [leetcode] 214. Shortest Palindrome 解题报告
- JAVA环境变量
- UDP的分析与UDP一次性能发多大的数据
- 数据分析师的“钱途”
- Cocos2d-JS 2017.1.17-代码阅读笔记(一)
- Web 内容,表现和行为分离
- leetcode-214. Shortest Palindrome
- TypeScript的学习历程2
- 线程-synchronized方法和同步块的作用范围;synchronized(this)和synchronized(obj)的区别
- post和get的乱码问题
- JSON与XML的区别比较
- android中超实用自定义log日志输出工具类
- std list/vector sort 自定义类的排序
- eclipse里面用svn关联项目
- java 获取图片信息(经纬度,像素等)