题解 | #牛的回文编号III#
牛的回文编号III
https://www.nowcoder.com/practice/6af8b6e39b004329a48cc2cd823e5b30
考察知识点:回文,字符串
解题分析:将十进制数转为二进制数,进行回文判断
详细的思路分析在代码注释里
采用的编程语言:C
完整的编码代码:如下所示
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param x int整型
* @return bool布尔型
*/
bool isPalindromeNumberIII(int x ) {
char tmp_str[36] = {0};
int tmp_x = x, count = 31;
int flag = 1;
// 初始化数组为字符0
for (int i = 0; i < count; i++)
tmp_str[i] = '0';
// 如果输入的数值为负数时,需要转为正数进行运算
if (tmp_x < 0)
tmp_x = -tmp_x;
// 根据十进制转二进制的计算公式,将十进制转为二进制字符串(就是那个十进制求余数来获取二进制的公式)
while (tmp_x > 0) {
if ((tmp_x % 2) == 0)
tmp_str[count--] = '0';
else
tmp_str[count--] = '1';
tmp_x /= 2;
}
// 这里如果输入的值为负数时,需要将二进制进行补码的计算
if (x < 0) {
for (int i = 0; i < 31; i++) {
// 这部分处理补码的进位关系
if (tmp_str[i] == '1') {
tmp_str[i] = '0';
if (tmp_str[i+1] == '0')
tmp_str[i+1] = '1';
else
tmp_str[i+1] = '0';
} else
tmp_str[i] = '1';
}
}
// 进行回文判断
for (int i = 0; i < 16; i++) {
if (tmp_str[i] != tmp_str[31-i]) {
flag = 0;
break;
}
}
if (flag)
return true;
else
return false;
}
面试高频TOP202解析 文章被收录于专栏
采用Java,C,Python等方法去解答面试高频TOP202题目,

查看15道真题和解析