• leetcode-9.-回文数



    本题是leetcode,地址:9. 回文数

    题目

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

    示例 1:

    输入: 121
    输出: true
    示例 2:

    输入: -121
    输出: false
    解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
    示例 3:

    输入: 10
    输出: false
    解释: 从右向左读, 为 01 。因此它不是一个回文数。
    进阶:

    你能不将整数转为字符串来解决这个问题吗?

    分析

    此题有两种解法:1、变换为字符串;2、通过数字反转

    字符串的回文很简单,双子针,一个从前往后,一个从后往前,判断字符是否相等即可,终止条件是双子针相等了,看代码;

    code-字符串

    public boolean isPalindrome(int x) {
          String s = x + "";
          char[] chars = s.toCharArray();
          int left = 0;
          int right = chars.length - 1;
          while(left <= right) {
            if(chars[left] != chars[right]) {
                return false;
            }
            left++ ;
            right--;
          }
          return true;
    } 
    

    code-数字反转

    对于一个数字,我们对其%10操作,可以得到该数的最后一位数字,例如1221对10取余得到1,持续%10,则可以得到每一位数字,如果我们对每次取余数的数字乘10操作,则可以得到对应的反转数字;

    当我们反转一半时,比较两个数是否相等即可;一半的判断条件就是不断取余的数组小于反转数字;

    ** 注:需要注意如果数字是121时,反转后我们得到两个数组1,12,直接舍弃最后一位数进行比较即可,看代码**

        public boolean isPalindrome(int x) {
          if(x == 0) return true;
          if(x < 0 || x % 10 == 0 ) return false;
          int rev = 0;
          while(x > rev) {
              rev = x % 10 + rev * 10;
              x = x / 10;
          }
          return x == rev || x  == rev / 10;
        }  
    

    你的鼓励也是我创作的动力

    打赏地址

  • 相关阅读:
    Python从入门到精通系列文章总目录
    使用465端口加密发邮件
    kubernetes学习14—Dashboard搭建和认证
    kubernetes学习01—kubernetes介绍
    CSS基础
    SVN 命令行的使用
    Python判断字符集
    Flask框架(2)-JinJa2模板
    搭建ntp服务器
    Ansible的Playbook的编写
  • 原文地址:https://www.cnblogs.com/yangsanchao/p/13339791.html
Copyright © 2020-2023  润新知