博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uva 11475 - Extend to Palindrome(KMP)
阅读量:6326 次
发布时间:2019-06-22

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

题目大意:给定一个字符串,输出最少须要加入多少个字符使得字符串变成回文串。

解题思路:以字符串的转置做KMP,然后用原串匹配就可以。最后匹配长度即为反复长度。

#include 
#include
#include
using namespace std;const int maxn = 1e5+5;char s[maxn], t[maxn];int n, jump[maxn];void get_jump () { int p = 0; for (int i = 2; i <= n; i++) { while (p && s[p + 1] != s[i]) p = jump[p]; if (s[p + 1] == s[i]) p++; jump[i] = p; }}int find () { int p = 0; for (int i = 1; i <= n; i++) { while (p && s[p + 1] != t[i]) p = jump[p]; if (s[p + 1] == t[i]) p++; } return p;}int main () { while (scanf("%s", s + 1) == 1) { printf("%s", s+1); n = strlen(s + 1); for (int i = 1; i <= n + 1; i++) t[i] = s[i]; reverse(s + 1, s + n + 1); get_jump(); int k = find(); for (int i = k + 1; i <= n; i++) printf("%c", s[i]); printf("\n"); } return 0;}

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

你可能感兴趣的文章
js 去除字符串空白符
查看>>
201521123026《JAVA程序设计》第13周学习总结
查看>>
【SICP练习】82 练习2.54
查看>>
[APUE]标准IO库(下)
查看>>
saltstack自动化运维系列③之saltstack的常用模块使用
查看>>
shell编程系列18--文本处理三剑客之awk动作中的条件及if/while/do while/for循环语句...
查看>>
工控安全资料
查看>>
修改linux最大文件句柄数
查看>>
网络编程---tcp/udp协议
查看>>
jmeter3.2 版本完美实现Load Test报表
查看>>
再看python多线程------threading模块
查看>>
R 从零开始,简单API集合
查看>>
学习react系列(八)—— mixins迁移
查看>>
《工作DNA》摘录三
查看>>
5.7-多源复制搭建
查看>>
HSPA+技术及系统分析
查看>>
Python 多线程及进程
查看>>
迁移应用数据库到MySQL Database on Azure
查看>>
各种类型的背包问题
查看>>
js计算base64文件流大小
查看>>