准备知识
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;
}
};