题解 | #牛的回文编号II#
牛的回文编号II
https://www.nowcoder.com/practice/0b576fd673834425878b99c736bb6c34
考察的知识点:字符串的处理,回文
题目解析:
1、先判断传的字符传是否符合农夫的编码规范
2、利用小数点找出前后数字,分别判断是否是回文
采用的编程语言:C
完整的编码代码:如下所示
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param x string字符串 * @return bool布尔型 */ bool isPalindromeNumber(char* x ) { int posi = 0, left_posi = -1, right_posi = -1; int len = 0; int flag = 1; if (x == NULL) return false; len = strlen(x); for (int i = 0; i < len; i++) { if (x[i] == '.') // 找到小数点的位置 posi = i; else if (x[i] != '0' && left_posi == -1) // 找到小数点左边非0的数字的位置 left_posi = i; else if (x[i] == '0' && left_posi != -1 && right_posi == -1) { // 找到小数点右边非0数字 right_posi = i-1; // x[i]此时的数字是0,所有需要减去1获取上一个非0的数字 break; } } /* 判断小数点左边的数字是否是回文 */ for (int i = left_posi; i < posi; i++) { if (x[i] != x[posi-i-1]) { //posi需要减去1,才是整数部分最后一个数字 flag = 0; break; } } /* 判断小数点右边是否是回文 */ if (flag) { // 如果小数点左边的数字已经判断为非回文,这里就无须判断小数部分 for (int i = (posi+1); i < right_posi; i++) { // posi加一才是小数点右边的第一个数字 if (x[i] != x[right_posi-i]) { flag = 0; break; } } } if (flag) return true; else return false; }
面试高频TOP202解析 文章被收录于专栏
采用Java,C,Python等方法去解答面试高频TOP202题目,