当前位置: 首页 > news >正文

( 字符串) 9. 回文数 ——【Leetcode每日一题】

❓9. 回文数

难度:简单

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false

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

  • 例如,121 是回文,而 123 不是。

示例 1:

输入:x = 121
输出:true

示例 2:

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

示例 3:

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

提示:

  • − 2 31 < = x < = 2 31 − 1 -2^{31} <= x <= 2^{31} - 1 231<=x<=2311

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

💡思路:

法一:

  • 转化为字符串

法二:进阶

  • 反转一半数字
  • 将整数分成左右两部分,右边那部分需要转置,然后判断这两部分是否相等。

🍁代码:(Java、C++)

法一:
Java

class Solution {public boolean isPalindrome(int x) {if(x < 0) return false;String s = String.valueOf(x);for(int i = 0, j = s.length() - 1; i < j; i++, j--){if(s.charAt(i) != s.charAt(j)) return false;}return true;}
}

C++

class Solution {
public:bool isPalindrome(int x) {if(x < 0) return false;string s = to_string(x);for(int i = 0, j = s.size() - 1; i < j; i++, j--){if(s[i] != s[j]) return false;}return true;}
};

法二:
Java

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

C++

class Solution {
public:bool isPalindrome(int x) {if(x == 0) return true;if(x < 0 || x % 10 == 0) return false;int y = x % 10;while(x > y){x /= 10;y = y * 10 + x % 10;}return x == y || x == y / 10;}
};

🚀 运行结果:

在这里插入图片描述

🕔 复杂度分析:

  • 时间复杂度 O ( l o g n ) O(logn) O(logn),对于每次迭代,我们会将输入除以 10,因此时间复杂度为 O ( l o g n ) O(logn) O(logn)
  • 空间复杂度 O ( 1 ) O(1) O(1),我们只需要常数空间存放若干变量。

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我 leetCode专栏,每日更新!

注: 如有不足,欢迎指正!

http://www.lryc.cn/news/64081.html

相关文章:

  • SpringAOP
  • 学系统集成项目管理工程师(中项)系列15_质量管理
  • 统计学习方法第四章——朴素贝叶斯法
  • 安装配置goaccess实现可视化并实时监控nginx的访问日志
  • springboot第14集:MyBatis-CRUD讲解
  • ES6新特性(1)
  • 这就是二分查找?(C语言版)
  • 操作系统之内存管理
  • 【Python | matplotlib】matplotlib.cm的理解以及举例说明
  • 数据库单实例升级
  • Photoshop如何使用选区之实例演示?
  • ThreadLocal的使用介绍和底层原理解析和开源框架的使用实例
  • 带你学c带你飞-P7取值范围
  • ramfs, rootfsinitramfs
  • 十三届蓝桥杯研究生组国赛-最大公约数(线段树+二分)
  • 数据结构——二叉树层序遍历
  • 【微机原理】8088/8086微处理器
  • springboot第12集:DAO功能代码
  • 基于KZG多项式承诺方案的RLN
  • 《站在巨人的肩膀上学习Java》
  • 敏捷ACP.敏捷估计与规划.Mike Cohn.
  • [创新工具和方法论]-01- DOE课程基础知识
  • LeetCode-1033. 移动石子直到连续
  • JVM调优入门指南:掌握步骤、参数和场景
  • 基于JSP+MySQL的跳蚤市场网站设计与开发
  • 内网穿透NPS和宝塔Nginx配合使用,开启SSL访问本地局域网网络
  • ToLua框架
  • Golang-常见数据结构Map
  • 基于空间矢量脉宽调制(SVPWM)的并网逆变器研究(Simulink)
  • 介绍tcpdump在centos中的使用方法