整数反转
整数反转-力扣
思路:
利用%和/不断循环取待反转整数的最后一位,注意判断是否超出范围。
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;
else
return false;
}