UVa 11475 - Extend to Palindrome

原创 2015年07月09日 17:07:08

題目:給你一個字符串,在後面拼接一部分使得它變成回文串,使得串最短,輸出這個回文串。

分析:KMP,dp。這裡利用KMP算法將串和它的轉置匹配,看結束時匹配的長度即可。

            因為串比較長,使用KMP比較合適,KMP原理請參照AC自動機總結

說明:╮(╯▽╰)╭。

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

char strA[100001];
char strB[100001];
int  next[100001];

void getnext(char T[])  
{  
    next[0] = -1;
    int i = 0, j = -1;  
    while (T[i]) {  
        if (j == -1 || T[i] == T[j]) {
			++ i; ++ j;
			if (T[i] != T[j])
				next[i] = j;
            else next[i] = next[j];  
        }else j = next[j];  
    }
}  

int KMP(char S[], char T[])
{
	int i = 0, j = 0;
	while (S[i]) {
		if (j == -1 || S[i] == T[j]) {
			i ++; j ++;
		}else j = next[j];
	}
	return j;
}

int main()
{
	while (~scanf("%s",strA)) {
		int len = strlen(strA);
		for (int i = 0; i < len; ++ i)
			strB[i] = strA[len-1-i];
		strB[len] = 0;
		getnext(strB);
		
		printf("%s%s\n",strA,&strB[KMP(strA, strB)]);
	}
    return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

UVA 11475 Extend to Palindrome KMP

题意:给出一个字符串,求
  • u012139398
  • u012139398
  • 2014年11月11日 21:19
  • 393

uva 11475 - Extend to Palindrome(KMP)

题目链接:uva 11475 - Extend to Palindrome 题目大意:给定一个字符串,输出最少需要添加多少个字符使得字符串变成回文串。 解题思路:以字符串的转置做KMP,然...
  • u011328934
  • u011328934
  • 2014年09月01日 22:20
  • 1171

Extend to Palindrome - UVa 11475 哈希

Problem E Extend to Palindromes Time Limit : 3 seconds       Your ...
  • u014733623
  • u014733623
  • 2014年05月20日 12:49
  • 857

UVA 11475 Extend to Palindrome hash

题意:给出一个字符串,让你添加最少的字符,使其成为回文串。 思路:
  • u012139398
  • u012139398
  • 2014年11月12日 22:55
  • 681

UVA 11475 - Extend to Palindrome(KMP)

UVA 11475 - Extend to Palindrome 题目链接 题意:给定一个字符串,问需要补上最少的字符使他变成回文串 思路:KMP,把字符串逆序和原串做匹配,匹配到最...
  • u011217342
  • u011217342
  • 2014年08月02日 19:15
  • 1729

UVA 11475 Extend to Palindrome 后缀数组 LCP

题意:给出一个字符串,求在其后添加最少的字符,使整个字符串
  • u012139398
  • u012139398
  • 2014年11月11日 20:39
  • 433

UVA - 11475 Extend to Palindrome manacher+贪心

题意:给出一个字符串,在末尾添加尽可能少的字符串,使这个新字符串为回文串,输出新字符串。 manacher+贪心 先用manacher O(n)的跑出原字符串的以每个i为中心的回文子串, 然后应该自己...
  • ProLightsfxjh
  • ProLightsfxjh
  • 2017年02月16日 18:39
  • 358

Extend to Palindrome - UVa 11475 Manacher算法

Problem E Extend to Palindromes Time Limit : 3 seconds       Your task is, given an in...
  • BlueFissure
  • BlueFissure
  • 2015年08月05日 18:46
  • 341

UVA 11475 Extend to Palindrome KMP,后缀数组

给一个字符串,尽可能少的添加字符使他变成一个回文串,求添加之后的回文串。     这题kmp,后缀数组都能做,大体思路就是找一个最长的回文后缀,那么要添加的字符就是字符串除掉这个后缀后剩下的前缀了。...
  • yanglei040
  • yanglei040
  • 2014年03月16日 15:00
  • 585

UVA 11475 Extend to Palindrome(字符hash)

题目:Extend to Palindrome 分析:这道题可以简单的KMP解决下,hash来说就是从中点位置开始枚举同时考虑奇偶性 判断是否回文,然后在末尾补出字母 KMP: #include #i...
  • u013582254
  • u013582254
  • 2015年08月24日 23:25
  • 362
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UVa 11475 - Extend to Palindrome
举报原因:
原因补充:

(最多只允许输入30个字)