专栏首页机器学习养成记LeetCode刷题DAY 1:回文数判断

LeetCode刷题DAY 1:回文数判断

相信很多小伙伴都感觉到行业内对模型算法工程师的要求越来越高,这种高要求不仅体现在对专业领域知识的理解应用,更体现在模型师同时要具备独立开发部署能力的用人诉求。So,对于非开发出身的模型师,编程能力从头补吧!

1 题目描述

  • 回文数:如一个整数,从左至右或从右至左读法一样,则该整数为回文数。
  • 题目要求:给定一个数字,判断是否为回文数。
  • 示例:输入11,从左读、从右读都是11,则返回true;输入123,从左读为123,从右读为321,不一致,因此返回false。

2 解题

  • 思路一:转为字符串判断原字符串与反转后字符串是否一致

回文数转换为字符串时,具有原字符串和反转后字符串相同的特点,而非回文数不具备此特点,因此可以通过这个方式判断是否为回文数。这种思路比较好理解,并且可以发现负数都不为回文数(如:-11从右读是11-),因此可以先将负数返回false,免去后面更多计算。

class Solution:
    def isPalindrome(self, x: int) :
        if(x<0) :
            return False
        return str(x)==''.join(reversed(str(x)))

#输入:15
#输出:false

#输入:1331
#输出:true
  • 思路二:取模反转拼接

仔细观察回文数,发现将回文数后半部分进行反转,结果跟前半部分一样(如12321,前一半是12,后一半反转后也是12,中间的3不影响整个判断),因此可以利用这个特征通过模运算和向下取整运算,将数字后半部分反转,然后与前半部分比对,得到最终结果。

class Solution:
    def isPalindrome(self, x: int) :
        if(x<0 or (x%10==0 and x !=0 )) :
        # 类似30这种0结尾的数字都不是回文数,
        # 因此首先通过与10的模运算进行排除
            return False
        a = len(str(x))
        old = x
        new = 0
        for i in range(0,ceil(a/2)):
            new = new*10+old%10 # %为模运算
            old = old//10 # //为向下取整
        return new == old or old==new//10 

#输入:15
#输出:false

#输入:1331
#输出:true

本文分享自微信公众号 - 机器学习养成记(chenchenwings),作者:三猫后端

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • LeetCode刷题DAY 2:最长回文子串

    之前刷过回文相关的题(LeetCode刷题DAY 1:回文数判断),本次再来一道跟回文相关的问题——找到最长回文子串。该题目是LeetCode热门100题之一,...

    三猫
  • 图片相似度识别:dHash算法

    之前已经介绍了aHash算法的基本原理及python实现代码(图片相似度识别:aHash算法),本次来继续介绍图片相似度识别的另一常用哈希算法——dHash。

    三猫
  • LeetCode刷题DAY 12:整数反转

    给出一个 32 位的有符号整数,将这个整数中每位上的数字进行反转并输出。如:输入120返回21,输入-12返回-21。这里仅考虑32位有符号整数,如反转后数字不...

    三猫
  • 一起学Rust-实战leetcode(七)

    判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

    江湖安得便相忘
  • 开发|只需 10 分钟!让你的小程序轻松接入「微信支付」

    你可能需要花半天时间看微信支付文档,再花半天调试支付签名,最后还得加两天时间搞定支付回调通知以及和自己的业务结合。

    知晓君
  • Spark2.x学习笔记:15、Spark SQL的SQL

    15、 Spark SQL的SQL 15.1 Spark SQL所支持的SQL语法 select [distinct] [column names]|[wild...

    程裕强
  • 商家如何利用微信小程序分销轻松实现10万销售额?

    大多数卖货的方式都会选择分销,之所以选择分销,是因为可以实现产品直接从生产商向消费者的转移。随着电子商务发展的趋势,手机用户不断增加,移动电商越来越受到的重视,...

    速成应用小程序开发平台
  • rails -help

    rails new APP_PATH [选项] //APP_PATH项目名称

    不知雨
  • LeetCode 430:扁平化多级双向链表 Flatten a Multilevel Doubly Linked List

    您将获得一个双向链表,除了下一个和前一个指针之外,它还有一个子指针,可能指向单独的双向链表。这些子列表可能有一个或多个自己的子项,依此类推,生成多级数据结构,如...

    爱写bug
  • 微信小程序原理

    时见疏星

扫码关注云+社区

领取腾讯云代金券