小white刷题记——LeetCodeHot100_9

文章介绍了两种判断整数是否为回文数的算法。第一种是直接将整数转换为字符串并反转,然后比较原字符串和反转后的字符串是否相同。第二种方法利用数学技巧,通过不断取整数的最后一位并与已构建的反转数结合,直到达到整数的一半,然后比较原数和反转数的一半是否相等。
摘要由CSDN通过智能技术生成

读题心路历程: 看了一遍题之后好家伙,简直一个简单啊。我的第一个思路就是,直接整数转字符串,然后reverse一下,两个一样就return true,反之就return false;

       (1) 这个思路的代码:

bool isPalindrome(int x) {
        string str = to_string(x);
	    string afstr = str;
	    std::reverse(str.begin(), str.end());
	    if (str == afstr)
	    {
	    	return true;
    	}
    	else { return false; }
    }

       (2) 然后我看了官方题解,官方题解的思路大概就是,例如“1234”这四个数,我只需要比较后两位“34”倒过来的“43”与前两位“12”是不是一样的就行,一样的话,就证明是一个回文数了。所以关键问题就是如何找到这个数字的一半,感觉这题用了数学的方法,还挺巧妙的。具体代码如下:

    bool isPalindrome(int x) {
//首先,先判断一下,x是不是是负数,或者x的个位数是不是0(这个可以用x%10来判断),然后还要排除一下x是不是0,因为如果x是0是回文数的。
        if(x<0||(x%10==0&&x!=0)){
            return false;
        }
//判断完之后,先定义一个相反数,就是思路中,x的一半。
        int reverseNum=0;
//在这里,需要判断这个相反数,什么时候到达了x的一半,就判断删数字的x和这个相反数的关系。当x不大于reverseNum了就证明,已经将x的一半给反过来了,就可以进行下一步判断了。
        while(x>reverseNum){
//这里这个相反数怎么算,例如1221,就是需要求后边这个21的相反数,这个相反数就等于x先%10+reverseNum*10,当reverseNum=1之后,x=122,然后下一步的reverseNum就等于10+2就等于12了,换一个例子:"32123",reverseNum先等于3,然后x等于3212,然后下一步的reverseNum=32了,然后x=321
            reverseNum = reverseNum*10+x%10;
            x = x/10;
        }
        return x==reverseNum/10||x==reverseNum;
    	
    }

“ # 设置按钮的背景颜色 self.m_button1.SetBackgroundColour('#0a74f7') self.m_button1.SetForegroundColour('white') self.m_button2.SetBackgroundColour('#0a74f7') self.m_button2.SetForegroundColour('white') self.m_button3.SetBackgroundColour('#0a74f7') self.m_button3.SetForegroundColour('white') self.m_button4.SetBackgroundColour('#238E23') self.m_button4.SetForegroundColour('white') self.m_button5.SetBackgroundColour('#238E23') self.m_button5.SetForegroundColour('white') self.m_button6.SetBackgroundColour('#238E23') self.m_button6.SetForegroundColour('white') self.m_button7.SetBackgroundColour('#6F4242') self.m_button7.SetForegroundColour('white') self.m_button8.SetBackgroundColour('#6F4242') self.m_button8.SetForegroundColour('white') self.m_button9.SetBackgroundColour('#6F4242') self.m_button9.SetForegroundColour('white') self.m_button10.SetBackgroundColour('#8E6B23') self.m_button10.SetForegroundColour('white') self.m_button11.SetBackgroundColour('#8E6B23') self.m_button11.SetForegroundColour('white') self.m_button12.SetBackgroundColour('#8E6B23') self.m_button12.SetForegroundColour('white') self.m_button13.SetBackgroundColour('#8E6B23') self.m_button13.SetForegroundColour('white') self.m_button14.SetBackgroundColour('#545454') self.m_button14.SetForegroundColour('white') self.m_button15.SetBackgroundColour('#545454') self.m_button15.SetForegroundColour('white') self.m_button16.SetBackgroundColour('#545454') self.m_button16.SetForegroundColour('white') self.m_panel1.SetBackgroundColour('white') # 设置面板的背景颜色”逐行解释代码
06-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值