回文数-lintcode-c++

来源:互联网 发布:数学建模中的十大算法 编辑:程序博客网 时间:2024/05/17 11:56

准备知识
1.sprintf函数
sprintf 最常见的应用之一是把整数打印到字符串中。例如把整数123 打印成一个字符串保存在s 中,sprintf(s, “%d”, 123); //产生”123”
2.c++格式化输出

cout<<dec<<a<<endl; //以十进制形式输出整数  cout<<hex<<a<<endl; //以十六进制形式输出整数a  cout<<setbase(8)<<a<<endl; //以八进制形式输出整数a  char *pt="China"; //pt指向字符串"China"  cout<<setw(10)<<pt<<endl; //指定域宽为,输出字符串  cout<<setfill('*')<<setw(10)<<pt<<endl; //指定域宽,输出字符串,空白处以'*'填充

%d表示十进制有符号整数,printf(”a=%d\n”, a); /结果输出十进制整数a=1234/
题目
判断一个正整数是不是回文数。

回文数的定义是,将这个数反转之后,得到的数仍然是同一个数。
思路
将数字转化为字符串,然后进行首尾比较。注意如何转换,首先是利用sprintf将数字转化为char[],因为要获取长度所以还必须转化为string.
代码

class Solution {public:    /*     * @param num: a positive number     * @return: true if it's a palindrome or false     */    bool isPalindrome(int num) {        // write your code here        char s[33];        sprintf(s,"%d",num);        string str(s);        for(int i=0;i<str.size()/2;i++){            if(str[i]!=str[str.size()-1-i])            return false;        }    return true;    }};
原创粉丝点击