nyoj37添加字符成回文串

原创 2016年08月30日 12:34:44

所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如”aba”。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。
样例输入
1
Ab3bd
样例输出
2
本来是没有什么思路的,看了别人的博客才明白了一点。
简单来说就是定义字符串s1,s2 s1是原字符串s2是原字符串的逆转字符串。
将这两个字符串求最长公共子序列,就是不需要再次匹配的,用字符串总长度减去他就可以了。dp[i][j]表示的是第一个字符串的前i个字符和第二个字符串的前j个字符串所能成的最大公共子序列。
可以自己画几个自己看看。

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

using namespace std;
char s[1010],s2[1010];
int dp[1010][1010];
int main()
{
    int T;
    cin >>T;
    while(T--){
        scanf("%s",s);
        int len=strlen(s);
        for(int i=len-1,j=0;i>=0;i--,j++){
            s2[j]=s[i];
        }
        for(int i=0;i<len;i++){
            for(int j=0;j<len;j++){
                if(s2[j]==s[i]){
                    dp[i+1][j+1]=dp[i][j]+1;
                }
                else{
                    dp[i+1][j+1]=max(dp[i+1][j],dp[i][j+1]);
                }
            }
        }
        cout <<len-dp[len][len]<<endl;
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

插入最少字符使原串变成回文串

51nod1092 回文字符串 解法一: 将原串逆序之后求一下LCS即可:#include using namespace std; const int maxn=1000; char a[max...
  • daniel_csdn
  • daniel_csdn
  • 2016年05月24日 18:00
  • 1389

面试题94:删除最少字符,使字符串为回文串

题目: 给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? 输出需要删除的字符的个数。 思路: 先求字符串s的反转串rs,然后求s和rs的最大公...
  • tianya_team
  • tianya_team
  • 2016年09月10日 17:14
  • 908

源字符串插入最少字符生成回文串

回文字符串 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba"。当然,我们给你的...
  • qq_25026989
  • qq_25026989
  • 2016年07月07日 14:06
  • 1210

NYOJ 1023 还是回文(DP,花最少费用形成回文串)

描述 判断回文串很简单,把字符串变成回文串也不难。现在我们增加点难度,给出一串字符(全部是小写字母),添加或删除一个字符,都会产生一定的花费。那么,将字符串变成回文串的最小花费是多少呢? 输入多组数...
  • chen_lin111
  • chen_lin111
  • 2015年08月12日 17:39
  • 596

添加最少的字符使字符串成为回文

给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。...
  • u011317090
  • u011317090
  • 2015年01月19日 11:43
  • 479

nyoj 37 回文字符串(最小的添加字符)

所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba"。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最...
  • chen_lin111
  • chen_lin111
  • 2015年04月18日 11:21
  • 1408

判断一个字符串能否通过添加一个字符变成回文串

蘑菇街笔试题目: 判断一个字符串能否通过添加一个字符变成回文串 相关概念: “回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。 回文可分为两种:偶数...
  • Victor526
  • Victor526
  • 2015年09月21日 16:57
  • 2539

(经典)POJ-3280 回文串DP

题目大意:给定一个字符串S及其长度M与S所含有的字符种数N(最多26种小写字母),然后给定这N种字母Add与Delete的代价,求将S变为回文串的最小代价和。 题目链接:点击打开链接 分析: ...
  • AC_hell
  • AC_hell
  • 2016年05月12日 19:36
  • 589

最少需要删除多少个字符才能使字符串S变为回文串

最少需要删除多少个字符才能使字符串S变为回文串                         输入一个字符串,求最少需要删除多少个字符才能使字符串S变为回文串。 例如,输入“cabebaf”,则...
  • hunanly
  • hunanly
  • 2016年04月05日 08:13
  • 2504

回文串判定

题目描述 输入一串字符(长度小于100),判断该串字符是否是回文串(正序读与逆序读内容相同)。 输入 输入一串字符(长度小于100)。 输出 若该串字符是回文串输出“ye...
  • sh_Tomorrow
  • sh_Tomorrow
  • 2015年08月12日 15:35
  • 609
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:nyoj37添加字符成回文串
举报原因:
原因补充:

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