整数反转
整数反转-力扣
思路:
利用%和/不断循环取待反转整数的最后一位,注意判断是否超出范围。
int reverse(int x){int y=0;while(x){if(y > INT_MAX/10 || y < INT_MIN/10)return 0;int tmp=x%10;y=y*10+tmp;x/=10;}return y;
}
字符串转换整数
字符串转换整数-力扣
思路:
- 将字符串中的字符跳过
- 通过读取字符的正负来确定
flag
的正负 - 当字符在
‘0’-‘9’
之间时进入循环,并判断是否超出范围
int myAtoi(char* s) {while (*s == ' '){s++;}int flag = 1;if(*s == '-' || *s == '+'){flag=(*s == '-')?-1:1;s++;}long tmp = 0;while (*s >= '0' && *s <= '9'){if (flag == -1){tmp = tmp * 10 + ((*s - '0') * flag);s++;}else{tmp = tmp * 10 + (*s - '0');s++;}if (tmp <= INT_MIN)return INT_MIN;if (tmp >= INT_MAX)return INT_MAX;}return tmp;
}
回文数
回文数-力扣
思路:
- 当x为负数时直接返回false
- 通过%和/将x进行倒置
- 判断是否相等,相等返回true,不相等返回false
bool isPalindrome(int x) {if(x < 0)return false;long tmp=0;long cur=x;while(cur){tmp=tmp*10+cur%10;cur/=10;}if(tmp == x)return true;elsereturn false;
}