题目:
给你一个整数 x
,如果 x
是一个回文整数,返回 true
;否则,返回 false
。
回文数:是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
- 例如,
121
是回文,而123
不是。
bool isPalindrome(int x) {
char str[100];
if (str)
{
sprintf(str, "%d", x);
int left = 0;
int right = strlen(str) - 1;
while (right > left)
{
if (str[left++] != str[right--])
{
return false;
}
}
return true;
}
else
return false;
}
在运行上的注意事项:
1.sprintf函数:
int sprintf( char *buffer, const char *format [, argument,…] );buffer是字符数组名;format是格式化字符串。
sprintf与printf函数类似,都使用格式化字符串来指定串的格式,在格式串内部使用一些以”%”开头的格式说明符来占据一个位置,在后边的变参列表中提供相应的变量,最终函数就会用相应位置的变量来替代那个说明符,产生一个调用者想要的字符串。
2.关于静态内存分配和动态内存分配
此处使用静态内存(char str[100];)分配在内存空间和运行时间上会明显优于使用动态内存分配(char* str=(char*)malloc(sizeof(char)*100;),这是由于动态内存分配设计到堆的管理和分配算法等复杂操作,且需要手动释放内存空间。
但动态内存分配优点在于灵活性,若是需要调整内存大小或需要大量内存时,动态内存分配更合适。