| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5446 人关注过本帖
标题:怎么把非回文字符串添加最少的字符成为回文字符串
取消只看楼主 加入收藏
huangapple
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:545
专家分:1790
注 册:2010-12-30
结帖率:97.06%
收藏
已结贴  问题点数:100 回复次数:3 
怎么把非回文字符串添加最少的字符成为回文字符串
/*回文字符串
时间限制:3000 ms  |  内存限制:65535 KB
难度:4
描述
所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba"。
当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。
现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。

输入
第一行给出整数N(0<N<100)
接下来的N行,每行一个字符串,每个字符串长度不超过1000.
输出
每行输出所需添加的最少字符数
样例输入
1
Ab3bd样例输出
2
*/

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

//int len;//数组长度
//char str[100];//定义数组
typedef struct _Save_Str
{
//    int num;
    char str[100];
    struct string *next;
}Save_Str;//构造存储二叉树数据的结构体


int huiwen(char *str)//判断是否回文
{
    int i;
    int len = strlen(str);

//    len = strlen(str);
    for(i = 0; i < len/2; ++i)
        if(str[i] != str[len -i -1])
            return 0;//不是回文返回0

    return 1; //回文返回1
}

int add_af(char *str, int num)//从后面加。。。str表示字符串首地址,num表示从前面数第几个字符不同
{
    int len = strlen(str);
    int i;

    for(i = 0; i < num; ++i)
        str[len - i] = str[len -i -1];
    str[len - num] = str[num];
    str[++len] = '\0';
    return len;//返回字符串的长度

}

int add_bf(char *str, int num)//从前面加。。str表示字符串首地址,num表示从前面数第几个字符不同

{
    int i, len = strlen(str);
    for(i = 0; i < (len - num); ++i)
        str[len - i] = str[len -i -1];
    str[num] = str[len - num];
    str[++len] = '\0';
    return len;//返回字符串的长度
}




void main(void)
{
     /*这里应该要用二叉树的知识,但我不懂,期待高手支招*/
}

对这个问题我的想法是这样的:
    要把一个非回文字符串变成一个回文字符串,无非是找到不同的,从前面加一个字母,或者后面加一个字母
这两个函数我都写好了,现在就差把他们组合起来,菜鸟级的我不懂
搜索更多相关主题的帖子: 字符串 时间 
2011-02-21 07:31
huangapple
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:545
专家分:1790
注 册:2010-12-30
收藏
得分:0 
不能打乱,只能在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。
所以二楼说的删除就不行了,
我菜,只想到用二叉树遍历


勤能补拙,熟能生巧!
2011-02-21 12:09
huangapple
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:545
专家分:1790
注 册:2010-12-30
收藏
得分:0 
唉呀,真的很不好意思,我一直都忘了测试下,原来2楼的代码是对的

勤能补拙,熟能生巧!
2011-02-21 21:37
huangapple
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:545
专家分:1790
注 册:2010-12-30
收藏
得分:0 
回复 2楼 『点点滴滴』
现在再回过来看二楼和代码,牛B!

勤能补拙,熟能生巧!
2011-02-26 23:00
快速回复:怎么把非回文字符串添加最少的字符成为回文字符串
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015466 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved