博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【回文】leetcode - Shortest Palindrome
阅读量:7109 次
发布时间:2019-06-28

本文共 1011 字,大约阅读时间需要 3 分钟。

题目:

Shortest Palindrome

 

Given a string S, you are allowed to convert it to a palindrome by adding characters in front of it. Find and return the shortest palindrome you can find by performing this transformation.

For example:

Given "aacecaaa", return "aaacecaaa".

Given "abcd", return "dcbabcd".

分析:

利用进行求解。时间复杂度O(n)。空间复杂度O(n).

class Solution {public:    string shortestPalindrome(string s) {        if(s.size()<=1)            return s;              string str(s.size()*2+1,'#');        for(int i=0,j=1;i
p(size,1); p[1]=2; for(int i=2;i<=size/2;++i) { int maxright=p[id]+id-1; if(i>maxright) { //注意检查越界 while(i - p[i]>=0 && str[i+p[i]]==str[i-p[i]]) ++p[i]; } else { int idleft=id-p[id]+1; int k=i-id,j=id-k,tmp=j-p[j]+1;//i和j关于id对称 if(tmp>idleft) p[i]=p[j]; else if(tmp
=0 && str[i+p[i]]==str[i-p[i]]) ++p[i]; } } if(p[i]+i>p[id]+id) id=i; if(i-p[i]+1==0) res=i; } if (res == s.size()) return s; else { string tmp = string(s.begin() + res, s.end()); reverse(tmp.begin(), tmp.end()); return tmp + s; } }};

转载地址:http://xalhl.baihongyu.com/

你可能感兴趣的文章
Nginx + Tomcat 动静分离实现负载均衡
查看>>
浏览器配置工具.bat
查看>>
Image Filter
查看>>
项目笔记:新增、编辑与删除
查看>>
前向星和链式前向星
查看>>
3.1软件体系结构风格
查看>>
LinkedHashMap 源码解析
查看>>
Linux系统centOS7在虚拟机下的安装及XShell软件的配置
查看>>
网络知识 ACL NAT IPv6
查看>>
2.1分层数据流
查看>>
laravel创建新的提交数据
查看>>
FineBI学习系列之FineBI的ETL处理(图文详解)
查看>>
Java 8 新特性
查看>>
Windows启动配置数据(BCD)存储文件包含一些无效信息
查看>>
slim请求参数获取
查看>>
MySQL主从介绍 准备工作 配置主 配置从 测试主从同步
查看>>
CSS------当内容超出div宽度后自动换行和限制文字不超出div宽度和高度
查看>>
要恢复页面吗?Chrome未正确关闭
查看>>
hbs模板(zmaze ui用的)
查看>>
使用ASP.NET SignalR实现一个简单的聊天室
查看>>