一、前记(3/4)

呃啊......若不是作业太多我应该还可以再更新一下咕咕了好久的爬虫blog。最近事情好多,复盘省赛,写实验报告,考试复习,还要复习考研(修正带也用完了),基本都没有什么时间去放空自己了。

二、算法题目

这次做了一个比较经典的回文数题目

三、题目分析

1、我的分析

这道题和我第二道算法有点类似,直接就是将字符串倒序,然后看和原数字是否相等。如果和原数字相等就为回文数。在本题里面题目还加了一个条件(让题目变得简单了),如果是负数直接判定为False。

(Python3)

①转化成字符串

    def isPalindrome(self, x):
        if x >= 0 :
            y=int(str(x)[::-1])

            if x==y:
                return True

            else:
                return False
        else:
            return False

②对于①的优化版本

    def isPalindrome(self,x):
       if str(x) == str(x)[::-1]:
           return True
       else:
           return False

③整数转化

    def isPalindrome(self, x: int) -> bool:
       if x < 0:
           return False

       m, n = x, 0

       while m:
           n = n * 10 + m % 10
           m = m // 10

       if x == n:
           return True
       else:
           return False

(C)

bool isPalindrome(int x){
    if(x<0)
        return false;

    long y=0;
    int temp=x;
    while(temp!=0){
        y=y*10+temp%10;
        temp/=10;
    }
    if(y==x)
        return true;
    return false;
}

2、别人的分析

(python3)

有一个家伙,他首先是排除了负数。然后将正数变成字符串。因为回文数的特征就是首尾的数字相同,例:121,1221...这个家伙,利用list的性质,进行首尾比较。

class Solution:
    def isPalindrome(self, x: int) -> bool:
        if x<0 :
            return False
        else:
            s=str(x)
            for i in range(len(s)//2):
                if s[i] != s[len(s)-i-1]:
                    return False
            return True

四、学到了什么?

练了练手,学到了更开阔的思路!!!下次继续加油