回文数:整数+字符串

1 整数判断回文数

int IsPalindrome(int iNumber){  //判断是否为回文数的函数  
    int temp=0;  
    int number = iNumber;  
    while(number){   //颠倒数后保存到temp中  
        temp=temp*10+(number%10);  
        number=number/10;  
    }  
    if(iNumber==temp) //是回文数,返回1  
        return 1;  
    else  
        return 0;  
}  

2字符串
http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=495
大家都知道,DXH 幼时性格怪癖,小朋友都不喜欢和他玩,这种情况一直到 DXH 的少年时期也没有改变。
少年时期的 DXH 迷上了”回文串”,“回文串”是指正着读倒着读都一样的字符串。DXH一个人的时候喜欢在地上随便写一个字符串 S,然后在这个字符串的右边添加尽量少的字符(可以不添加,就是 0 个),使得这个字符串变成“回文串”。但玩的时间长了,DXH 的手也酸了,聪明的你能帮他写一个程序,算出这个添加最少字符形成的回文串吗?
一个字符串 S[1..L]被称为回文串,当且仅当 S[i] = S[L - i + 1] (1 <= i <= L)。


#include <iostream>
#include <string>
using std::endl;
using std::cin;
using std::cout;
using std::string;
//判断是否为回文串
int is_HuiWenStr(string s)
{
    int j = s.length() - 1;
    for(int i=0; i<j; ++i , --j)
    {
        if(s[i] != s[j])
        {
            return 0;
        }
    }
    return 1;
}
int main()
{
#ifdef LOCAL
    freopen("input.txt" , "r" , stdin);
    freopen("output.txt" , "w" , stdout);
#endif
    int N;
    cin >> N;
    while(N--)
    {
        string str , result;
        cin >>str;
        if(is_HuiWenStr(str))
        {
            cout << str << endl;
        }else{
            int length = str.length();
            //枚举添加的字符数量
            for(int i=0;i<length; ++i)
            {
                result = str;
                for(int j=i;j>=0;--j)
                {
                    result+= str[j];
                }
                if(is_HuiWenStr(result))
                {
                    cout << result << endl;
                    break;
                }
            }
        }
    }
}

最长回文子串
暴力算法:我们求出一个最长公共子串的时候,我们检查一下这个子串是不是一个回文,如果是,那这个子串就是原串S的最长回文子串;如果不是,那么就去求下一个次长公共子串,以此类推。

参考:http://blog.csdn.net/computer_liuyun/article/details/27967963

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值