UVA11475
来源:互联网 发布:数控车床初级编程视频 编辑:程序博客网 时间:2024/06/06 02:09
1.题目描述:
题目描述PDF
2.题意概述:
给你一个字符串,让你在结尾添加最少的字符使其成为回文字符串。
3.解题思路:
当时没学kmp,学长开的是哈希专题,考虑hash:先按倒序求出各子串的哈希值,然后再正着算子串的哈希值,直到找到哈希值相同的,找到最长的回文串。。。
例如abcdc,先依次求出c,cdc,cdcb,cdcba的哈希值。。然后求abcdc的哈希值。。再去掉a,求出bcdc的哈希值,再求出cdc的哈希值。。然后这时候刚刚算过的哈希值里有这个诶。然后就是处理输出就好了。
4.AC代码:
#include <bits/stdc++.h>#define INF 0x7fffffff#define maxn 100100#define eps 1e-6#define pi acos(-1.0)#define e 2.718281828459#define mod (int)1e9 + 7#define hashmod 2233using namespace std;typedef long long ll;int main(){#ifndef ONLINE_JUDGE freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout); long _begin_time = clock();#endif string str; while (cin >> str) { int len = str.length(); int pre = 0, cur = 0, pos = 1, ans = len; for (int i = len - 1; i >= 0; i--) { pre = pre + pos * (str[i] - 'a'); cur = cur * hashmod + str[i] - 'a'; pos *= hashmod; if (pre == cur) ans = i; } cout << str; for (int i = ans - 1; i >= 0; i--) cout << str[i]; puts(""); }#ifndef ONLINE_JUDGE long _end_time = clock(); printf("time = %ld ms\n", _end_time - _begin_time);#endif return 0;}
阅读全文
0 0
- uva11475
- UVA11475
- UVA11475--Extend to Palindrome
- KMP(后缀数组)uva11475
- UVa11475 - Extend to Palindrome
- uva11475 - Extend to Palindrome KMP
- UVA11475 Extend to Palindrome(哈希)
- UVA11475 KMP算法简单运用
- UVA11475:Extend to Palindrome(Hash 或 KMP)
- LeetCode 115. Distinct Subsequences
- c++中的Raw String的Macro用法
- 搭建网站
- JsonObject生成Json字符串有转意字符
- 自己同学遇到的问题
- UVA11475
- Android Gson中的Map与JSON相互切换
- linux exec更新svn
- 通过 javascript 获取当前url地址相关信息
- verify 验证码生成控件
- 回顾Java基础知识——(1)
- selenium之 文件上传所有方法整理总结
- log4j:WARN No appenders could be found for logger
- 简单解决lnmp环境下不支持thinkphp路由(pathinfo模式)