char * largestOddNumber(char * num){
char *first = num;
char *last = num + strlen(num) - 1;
while (last >= first) {
if (*last & 0x1) {
*(last + 1) = '\0';
return first;
}
last--;
}
return "";
}
/*
函数作用:将一串数字字符串从后往前遍历,找到第一次出现奇数的位置
然后返回修改后的字符串
例:24386
返回:243
输入:213546
输出:2135
*/
char * largestOddNumber(char * num){
char *first = num;
char *last = num + strlen(num) - 1; //输出num最后一个字符,num是首地址,加上strlen(num)-1,last指向的就是最后一个字符
while (last >= first) { //循环条件是从后向前遍历num字符串
if (*last & 0x1) { //C语言中&表示按位与,0x开头的表示的是十六进制数,k&0x1表示k与0x1按位与,其效果为取k的二进制中最右边的数字
//在这里作为判断条件,实际上就是找奇数,奇数的二进制最右边为1
*(last + 1) = '\0'; //令他后面的字符变为空字符
return first;
}
last--; //指针前移
}
return "";
}