题解 | #牛的回文编号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题目,