力扣:9. 回文数

news2024/12/29 13:49:07

力扣:9. 回文数

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

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

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

示例 1:

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

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

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

提示:

-231 <= x <= 231 - 1

思路

1.反转全部数字

负数都不是回文数
反转后的数字与原来的数字进行比较,相等则为回文数,否则不是

#include <iostream>
using namespace std;

class Solution {
public:
    bool isPalindrome(int x) {
        if(x < 0)
            return false;
        
        long palindrome = 0; // 变量类型用 int 会溢出,用 long
        int num = x; // 要多定义一个变量 num 存放 x 的值,如果直接用 x,最后判断时 x 的值会改变
        while(num > 0) {
            palindrome = palindrome * 10 + num % 10;
            num /= 10;
        }
        
        return x == palindrome;
    }
};

int main() {
    Solution solution;
    int num = 12321;

    if(solution.isPalindrome(num)) {
        std::cout << num << " is a palindrome number." << std::endl;
    } else {
        std::cout << num << " is not a palindrome number." << std::endl;
    }

    return 0;
}

在这里插入图片描述

2.反转一半的数字

负数都不是回文数
因为高位不能为0,所以个位是0的数不是回文数,0除外

#include<iostream>
using namespace std;
class Solution {
public:
    bool isPalindrome(int x) {
        if(x<0||(x!=0&&x%10==0))
        return false;
        int palindrome=0;
        while(x>palindrome){
            palindrome=palindrome*10+x%10;
            x/=10;
        }
        return x==palindrome||x==palindrome/10;//如果此回文数的个数为奇数则x==palindrome/10,为偶数则x==palindrome
    }
};

int main()
{
	Solution solution;
	int x = 12321;
	bool result = solution.isPalindrome(x);
	if(result){
		cout <<  x << " is palindrome" << endl;
	}
	else {
		cout << x << " is not palindrome" <<endl;
	}
	return 0;
}

在这里插入图片描述

复杂度分析:
时间复杂度:O(logn),每次循环输入除以10
空间复杂度:O(1)
比较:
两种方法相比较,第二种方法运算时间更短,占用的内存更少

力扣官方为第二种:
class Solution {
public:
    bool isPalindrome(int x) {
        // 特殊情况:
        // 如上所述,当 x < 0 时,x 不是回文数。
        // 同样地,如果数字的最后一位是 0,为了使该数字为回文,
        // 则其第一位数字也应该是 0
        // 只有 0 满足这一属性
        if (x < 0 || (x % 10 == 0 && x != 0)) {
            return false;
        }

        int revertedNumber = 0;
        while (x > revertedNumber) {
            revertedNumber = revertedNumber * 10 + x % 10;
            x /= 10;
        }

        // 当数字长度为奇数时,我们可以通过 revertedNumber/10 去除处于中位的数字。
        // 例如,当输入为 12321 时,在 while 循环的末尾我们可以得到 x = 12,revertedNumber = 123,
        // 由于处于中位的数字不影响回文(它总是与自己相等),所以我们可以简单地将其去除。
        return x == revertedNumber || x == revertedNumber / 10;
    }
};

题目:力扣:9. 回文数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1481831.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jvm面试题-背诵版

按照思维导图抽查和记忆&#xff0c;答案见&#xff1a;四、面试-多线程/并发_scheduledfuture释放-CSDN博客

初学者如何使用QT新建一个包含UI界面的C++项目

文章目录 一、下载并安装QT51、下载安装包2、注册/登录账号3、安装qt6 二、新建QT Widget项目1、新建项目并且运行2、易错点&#xff1a;可能运行成功得到UI界面但是会报错&#xff08;原因是使用了中文路径&#xff09; 一、下载并安装QT5 1、下载安装包 进入下载网址 Windo…

javascript中的class基础入门(1)

javascript中的class start 最近在学习&#xff1a;cocos &#xff0c;准备自己制作小游戏。过程中遇到不少疑问&#xff0c;我计划将这些疑问写成一个系列博客&#xff0c;用以记录。这篇文章来了解 class 1. 前言 1. 前言 本文对应版本 Cocos Creator 3.8。Cocos Creato…

Pytest中测试结果收集:pytest_terminal_summary!

前言 Pytest是Python的一种强大的测试框架&#xff0c;它提供了丰富的功能和插件来满足各种测试需求。 其中&#xff0c;pytest_terminal_summary是一个钩子函数&#xff0c;它允许我们在测试运行结束后&#xff0c;添加自定义的总结信息到测试报告中。这个功能在需要对测试结…

Java 小项目开发日记 04(文章接口的开发、oss图片上传)

Java 小项目开发日记 04&#xff08;文章接口的开发、oss图片上传&#xff09; 项目目录 配置文件&#xff08;pom.xml&#xff09; <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:sc…

HMAC算法

HMAC HMAC可以用来加密、数字签名、报文验证等。 1. 消息认证码 消息认证码&#xff08;Message Authentication Code&#xff0c;MAC&#xff09;是基于消息和秘钥的公开函数&#xff0c;输出为定长数据&#xff1a; MACC(M,K) 假定通信双发共享秘钥K&#xff0c;发送方A向接…

ubuntu22.04 成功编译llvm和clang 3.4.0,及 bitcode 函数名示例,备忘

1, 获取llvm 仓库 从github上获取&#xff1a; $ git clone --recursive https://github.com/llvm/llvm-project.git 2, 检出 llvmorg-3.4.0 tag 针对llvm 3.4.0版本&#xff0c;检出 $ cd llvm-project $ git tag $ git checkout llvmorg-3.4.0 3, 配置并编译llvm 使用 M…

ARK:《BIG IDEAS 2024》

Cathie Wood所带领的方舟投资&#xff08;ARK&#xff09;发布了年度重磅研究报告《BIG IDEAS 2024》&#xff0c;该报告指出人工智能、公共区块链、多组学测序、能源存储和机器人技术这五大板块的融合将带来全球经济活动的改变。 这五个创新平台正在融合并定义这个技术时代&am…

GoFrame:如何简单地搭建一个简单地微服务

一切资料来源于GoFrame官网&#xff0c; 感兴趣的&#xff0c; 可以直接去官网查阅相关资料。 首先下载框架工具&#xff0c; 下载地址&#xff1a;https://github.com/gogf/gf/releases 然后进入你想要放置的项目文件夹&#xff0c; 执行命令行 gf init {project_name} #pr…

插混、油混、增程式、轻混、强混,啥区别

这里写自定义目录标题 随着我国新能源汽车的大力推进&#xff0c;电车可以说是世界未来的主流&#xff0c;只不过现在是处在一个过渡时代 这是个好时代&#xff0c;因为我们见证并体验着历史过渡的细节 这是个不好的时代&#xff0c;因为我们可能只是未来新新人类的试验品 帮他…

微信小程序iOS禁止上下拉显示白边

先上图暴露出问题 iOS端这个页面明明正好显示的&#xff0c;非要能下拉上拉给显示出来点白边。这样不就不好看了嘛。。 想了想是不是支持页面下拉导致的&#xff0c;加入以下代码到json文件中。 {"enablePullDownRefresh": false,"usingComponents": {} }…

【k8s资源调度--DaemonSet】

1、什么是守护进程 有以下这样一个商品场景&#xff1a; 1、用户在商城查询商品信息&#xff0c;查询商品信息的时候需要登录用户&#xff0c;如果用户想要下单&#xff0c;需要提交到订单服务&#xff0c;最后下单完成后&#xff0c;需要更新仓库的商品数量信息。 2、如果每一…

mysql和redis双写一致性策略分析

mysql和redis双写一致性策略分析 一.什么是双写一致性 当我们更新了mysql中的数据后也可以同时保证redis中的数据同步更新&#xff1b; 数据读取的流程&#xff1a; 1.读取redis,如果value!null,直接返回&#xff1b; 2.如果redis中valuenull&#xff0c;读取mysql中数据对应的…

P2040 打开所有的灯

题目传送门&#xff1a;P2040 打开所有的灯 用深度优先搜索实现的一个填色题。 题目步骤&#xff1a; 1..dfs 首先dfs要判断是否符合题意&#xff0c;如果符合题意就更新最短路&#xff1b; 如果不符合题意就枚举 如果是关的就把周围四个包括 给标记上和原来相反的&#xf…

AI大预言模型——ChatGPT与AI绘图及论文高效写作

原文链接&#xff1a;AI大预言模型——ChatGPT与AI绘图及论文高效写作 2023年随着OpenAI开发者大会的召开&#xff0c;最重磅更新当属GPTs&#xff0c;多模态API&#xff0c;未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff0c;不亚于互联网…

python语言1

一、pytho中的注释 1.1注释的理解 程序员在代码中对代码功能解释说明的标注性文字可以提高代码的可读性注释的内容将被python解释器忽略&#xff0c;不被计算机执行 1.2注释的分类 注释分为&#xff1a;单行注释、多行注释、中文声明注释 &#xff08;1&#xff09;单行注…

计算机网络-网络互连和互联网(五)

1.路由器技术NAT&#xff1a; 网络地址翻译&#xff0c;解决IP短缺&#xff0c;路由器内部和外部地址进行转换。静态地址转换&#xff1a;静态NAT&#xff08;一对一&#xff09; 静态NAT&#xff0c;内外一对一转换&#xff0c;用于web服务器&#xff0c;ftp服务器等固定IP的…

大模型的智慧之源:图技术的崛起

自2023年以来&#xff0c;大语言模型&#xff08;Large Language Models&#xff0c;LLMs&#xff09;的兴起已经改变了科技行业的面貌。 科创公司如果不涉足这一领域&#xff0c;似乎就不好意思称自己是科技企业。 然而&#xff0c;随着大语言模型的普及&#xff0c;它固有的…

Linux高级编程:进程(三),线程(一)

进程的一生&#xff1a; execute&#xff1a; exec族 用fork创建子进程后执行的是和父进程相同的程序&#xff08;但有可能执行不同的代码分支&#xff09;&#xff0c; 子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时&#xff0c;该进程的 用户空间…

Python复合型数据避坑指南

目录 前言 列表&#xff08;Lists&#xff09; 1. 修改可变对象 2. 浅拷贝和深拷贝 元组&#xff08;Tuples&#xff09; 集合&#xff08;Sets&#xff09; 字典&#xff08;Dictionaries&#xff09; 1. 键值唯一性 2. 键的类型 实际应用场景 1. 数据分析与清洗 2. 网络…