Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >leetcode回文数

leetcode回文数

原创
作者头像
Anime_Bucket
发布于 2025-03-07 09:18:01
发布于 2025-03-07 09:18:01
8200
代码可运行
举报
文章被收录于专栏:LeetCode刷题-WPLeetCode刷题-WP
运行总次数:0
代码可运行

题目

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

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

例题:

示例 1:

输入:x = 121 输出:true

示例 2:

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

示例 3:

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

思路:

我们首先来看看代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 #include <stdio.h>
 #include <stdbool.h>            //使得可以使用bool类型。
 #include <string.h>
 ​
 bool isPalindrome(int x) {
     // 负数不是回文数
     if (x < 0) {
         return false;
     }// 将整数转换为字符串
     char num[20];
     sprintf(num, "%d", x);// 获取字符串长度
     int length = strlen(num);// 判断是否是回文数
     for (int i = 0; i < length / 2; i++) {
         if (num[i] != num[length - i - 1]) {
             return false;                           // 如果有不匹配的字符,返回 false
         }
     }return true;                                    // 如果所有字符都匹配,返回 true
 }
 ​
 int main() {
     int number;
     printf("请输入一个整数:");
     scanf("%d", &number);if (isPalindrome(number)) {
         printf("%d 是回文数。\n", number);
     } else {
         printf("%d 不是回文数。\n", number);
     }return 0;
 }

首先我们需要去判断它是不是一个负数,因为如果是一个负数的话,那么它一定不是一个回文数,上面的例题二有写。

然后我们要去判断这个数的前半部分和后半部分的话,我么是不是得知道这个数有几位?我使用的是进阶做法,将我们的整数格式化为字符串,这样做的效率会更加高。当我们知道了他又几位之后,我们就可以使用for循环的遍历了。然后我们就去分析正着的数和反着的数是不是一样的,如果一样的话,就是回文数。不一样的话,就不是。但是有一个不错的想法是这样的,假如说我们的x=12321那我们是不是可以只让我们的i遍历到这个数的一半,我们让前半段和后半段做比较,如果相同,是不是也能说明这个是一个回文数。

扩展:

什么是sprintf函数?

C 库函数 int sprintf(char \*str, const char \*format, ...) 发送格式化输出到 str 所指向的字符串。

下面是 sprintf() 函数的声明。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 int sprintf(char *str, const char *format, ...)
  • str -- 这是指向一个字符数组的指针,该数组存储了 C 字符串。
  • format -- 这是字符串,包含了要被写入到字符串 str 的文本。它可以包含嵌入的 format 标签,format 标签可被随后的附加参数中指定的值替换,并按需求进行格式化。

如果我们想要把一个整数转换成字符串的话,我们可以这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 sprintf(str, "%d", format);

如果是将字符串直接复制到目标字符数组中。

我们就可以使用%s

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 sprintf(str, "%s", format);

问题:

我在本次题目中遇到过一下几个问题:

preview
preview

我使用的是C99的解释器,但是我这里提示到了说是不能识别到bool类型。

可能原因有一下几个:

  1. 未包含<stdbool.h>头文件
  2. 编译器不支持 C99 或更新标准

然后我加入了<stdbool.h>的头文件之后,发现就可以使用这个类型了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【收藏】 100 道 Linux 面试题 附答案
本文一共 3万多字,分别从 Linux概述、磁盘、目录、文件、安全、语法级、实战、文件管理命令、文档编辑命令、磁盘管理命令、网络通讯命令、系统管理命令、备份压缩命令等方面拆解 Linux 知识点。
释然IT杂谈
2022/10/27
3.2K0
【收藏】 100 道 Linux 面试题 附答案
Linux面试题基础宝典==面试必备
另外,du 命令也可以做类似的事情,可以看看 《查找 Linux 系统中的占用磁盘空间最大的前 10 个文件或文件夹》 文章。
心跳包
2020/08/31
2.7K0
Linux面试题基础宝典==面试必备
linux运维面试题总结「建议收藏」
4、一个ext3的文件分区,当使用touch test.file命令创建一个新文件时报错,报错的信息是显示磁盘已满,但是采用df -h命令查看磁盘大小时,只使用了60%的磁盘空间,为什么会出现这个情况,说说你的理由
全栈程序员站长
2022/08/22
2.1K0
linux运维面试题总结「建议收藏」
面试必备(背)-Linux八股文系列!
Linux 是免费可自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。
微客鸟窝
2022/04/08
4K0
面试必备(背)-Linux八股文系列!
Java面试——Linux
一、如果知道一个文件名称,怎么查这个文件在 Linux下的哪个目录,如:要查找 tnsnames.ora文件
Java架构师必看
2021/04/26
1K0
Linux面试题Top100
回答: Linux是基于Linux内核的操作系统。它是一个开源操作系统,可以在不同的硬件平台上运行。它为用户提供了免费的低成本操作系统。这是一个用户友好的环境,他们可以在其中轻松修改和创建源代码的变体。
陈哈哈
2020/07/06
14.9K0
Linux面试题Top100
2020最新版Linux面试题(二)
一般来说,面试不会问 inode 。但是 inode 是一个重要概念,是理解 Unix/Linux 文件系统和硬盘储存的基础。
码农编程进阶笔记
2021/07/20
1.8K0
运维面试题(每日一题)
默认生产环境中,三台服务器均可满足访问外网需求;但最终目标是完成服务器01与服务器03之间的不同网段间通讯,即服务器01的10.0.0.10主机IP地址可以正常访问服务器03的10.0.1.10主机IP地址
全栈程序员站长
2022/08/10
5.2K0
运维面试题(每日一题)
linux常用命令&目录结构
它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。 8. 建立终端
20岁爱吃必胜客
2022/11/13
5980
linux常用命令&目录结构
Linux面试题(2021最新版)
作为 Java 的从业者,在找工作的时候,一定会被问及关于Linux 相关的知识。Linux知识的掌握程度,在很多面试官眼里是候选人技术深度的一个重要评判标准。在这里我们将详细的整理常见的Linux面试题目, 提供给大家学习参考。
Java程序猿
2021/04/19
7.4K0
Linux经典面试题
显示/etc/inittab中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字符的行;
老高的技术博客
2022/12/27
7220
Linux基础知识点
文件(包括目录)权限分为三类别,从左至右依次是:文件所属主的权限、文件所属所在用户组的权限和其他用户的权限。
恋喵大鲤鱼
2018/08/03
1.9K0
Linux基础知识点
面试官:用过Linux吗?
所有可操作的计算机资源都存在于目录树这个结构中,对计算资源的访问,可以看做是对这棵目录树的访问
cuijianzhe
2024/02/03
1680
面试官:用过Linux吗?
2017年企业版高薪运维经典基础面试题汇总
1.解释下什么是GPL,GNU,自由软件? GPL:(通用公共许可证):一种授权,任何人有权取得、修改、重新发布自由软件的权力。 GNU:(革奴计划):目标是创建一套完全自由、开放的的操作系统。 自由软件:是一种可以不受限制地自由使用、复制、研究、修改和分发的软件。主要许可证有GPL和BSD许可证两种。 2.如何选择Linux操作系统版本一般来讲,桌面用户首选Ubuntu;服务器首选RHEL或CentOS,两者中首选CentOS。 根据具体要求: ①安全性要求较高,则选择Debian或者FreeBS
小小科
2018/05/02
1.2K0
2017年企业版高薪运维经典基础面试题汇总
linux常见面试题
Linux是一种基于UNIX的操作系统,最初是由Linus Torvalds引入的。它基于Linux内核,可以运行在由Intel,MIPS,HP,IBM,SPARC和Motorola制造的不同硬件平台上。Linux中另一个受欢迎的元素是它的吉祥物,一个名叫Tux的企鹅形象。
心跳包
2020/08/31
2.8K0
云计算工程师之Linux指令集锦
LINUX简介与安装 一、Linux基础认知知识: 多使用者、多任务、多层次 Linux:开源、免费、安全、稳定 Linux中一切皆文件 Linux严格区分大小写
张哥编程
2024/12/13
1260
Linux 文件系统与日志分析「建议收藏」
  Linux,全称 GNU/Linux,是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。伴随着互联网的发展,Linux 得到了来自全世界软件爱好者、组织、公司的支持。它除了在服务器方面保持着强劲的发展势头以外,在个人电脑、嵌入式系统上都有着长足的进步。使用者不仅可以直观地获取该操作系统的实现机制,而且可以根据自身的需要来修改完善Linux,使其最大化地适应用户的需要。   Linux 的基本思想有两点:一切都是文件;每个文件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说 Linux 是基于 Unix 的,很大程度上也是因为这两者的基本思想十分相近。
全栈程序员站长
2022/08/24
2.2K0
Linux 文件系统与日志分析「建议收藏」
Linux运维常见面试题汇总
版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://blog.csdn.net/wh211212/article/details/52856240
shaonbean
2019/05/26
4.2K0
Linux从入门到入土①(Linux概述、文件系统、VIM编辑器)
林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds,1969年12月28日- )也就是Linux之父:
十八岁讨厌编程
2022/12/10
1.3K0
2019年常见的Linux面试题及答案解析,哪些你还不会?
Linux 面试题 1、绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令? 2、怎么查看当前进程?怎么执行退出?怎么查看当前路径? 3、怎么清屏?怎么退出当
程序员追风
2019/12/27
1.6K0
2019年常见的Linux面试题及答案解析,哪些你还不会?
相关推荐
【收藏】 100 道 Linux 面试题 附答案
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验