LeetCode.9 Palindrome Number

题干:判断一个整数是不是回文

解法1:整数转字符串,判对称

时间效率 164ms,耗时在字符串转换 应该是这样

bool isPalindrome(int x) {
    if (x < 0)
        return false;
    else {
        int num = x;
        char str[1000];
        sprintf(str, "%d" , num);
        int size = (int)strlen(str);
        bool isFlag = true;
        for  (int i = 0; i < size / 2; i ++) {
            if (str[i] != str[size - 1 - i]) {
                isFlag = false;
                break;
            }
        }
        return isFlag;
    }
}

 第二种,利用整数翻转,参考例题 LeetCode 7 reverse-integer

 时间效率 116ms (感觉到题目有循序渐进哦 能把做过的题的方法用上)

bool isPalindrome(int x) {
    if (x < 0 || (x % 10 == 0 && x > 0)) //能被10 整除 大于 0的数 一定不对称 边界
        return false;
    else {
        int sumLong = x;
        int sum = 0;
        int num =  0;
        while (x > 0) {    
            num = x % 10;  //末尾数字
            sum = sum * 10;//进位
            sum += num;
            x = x / 10;
        }
        return sum == sumLong;
    }
}

猜你喜欢

转载自www.cnblogs.com/someonelikeyou/p/9631600.html