一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

简介: 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

C语言实现


在C语言中,你可以通过分别提取出五位数的各个位(万位、千位、百位、十位、个位),然后比较这些位是否满足回文数的条件。


c复制代码
 #include <stdio.h>  
 
 #include <stdbool.h>  
 
   
 
 bool isPalindrome(int x) {  
 
     // 排除非五位数和负数  
 
     if (x < 10000 || x > 99999) {  
 
         return false;  
 
     }  
 
       
 
     // 提取各个位  
 
     int tenThousand = x / 10000; // 万位  
 
     int thousand = (x / 1000) % 10; // 千位  
 
     int hundred = (x / 100) % 10; // 百位  
 
     int ten = (x / 10) % 10; // 十位  
 
     int one = x % 10; // 个位  
 
       
 
     // 比较回文  
 
     return (tenThousand == one) && (thousand == ten);  
 
 }  
 
   
 
 int main() {  
 
     int number;  
 
     printf("请输入一个五位数: ");  
 
     scanf("%d", &number);  
 
       
 
     if (isPalindrome(number)) {  
 
         printf("%d 是回文数\n", number);  
 
     } else {  
 
         printf("%d 不是回文数\n", number);  
 
     }  
 
       
 
     return 0;  
 
 }



Python实现


Python 实现会相对简洁一些,因为 Python 提供了更丰富的字符串操作功能。但题目要求的是数字,所以我们可以先将数字转换为字符串,然后检查其是否为回文数。


方法1:字符串比较


python复制代码
 def is_palindrome(x):  
 
     # 排除非五位数和负数  
 
     if not 10000 <= x <= 99999:  
 
         return False  
 
       
 
     # 转换为字符串并检查回文  
 
     return str(x) == str(x)[::-1]  
 
   
 
 number = int(input("请输入一个五位数: "))  
 
 if is_palindrome(number):  
 
     print(f"{number} 是回文数")  
 
 else:  
 
     print(f"{number} 不是回文数")



方法2:数字提取比较(类似C语言)


虽然Python中不常用这种方法,但为了与C语言的方法保持一致,我们也可以这样做:


python复制代码
 def is_palindrome_number(x):  
 
     # 排除非五位数和负数  
 
     if not 10000 <= x <= 99999:  
 
         return False  
 
       
 
     # 提取各个位  
 
     ten_thousand = x // 10000  
 
     thousand = (x // 1000) % 10  
 
     hundred = (x // 100) % 10  
 
     ten = (x // 10) % 10  
 
     one = x % 10  
 
       
 
     # 比较回文  
 
     return ten_thousand == one and thousand == ten  
 
   
 
 number = int(input("请输入一个五位数: "))  
 
 if is_palindrome_number(number):  
 
     print(f"{number} 是回文数")  
 
 else:  
 
     print(f"{number} 不是回文数")




这两种Python方法都可以实现题目要求,但通常第一种方法(使用字符串操作)在Python中更为常见和简洁。


image.png


相关文章
【Leetcode -231. 2的幂 -242.有效的字母异位词 -258.各位相加】
【Leetcode -231. 2的幂 -242.有效的字母异位词 -258.各位相加】
40 0
|
C语言
C语言之回文数的求解。回文数一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
C语言之回文数的求解。回文数一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
188 0
|
6月前
力扣421. 数组中两个数的最大异或值(字典树)
力扣421. 数组中两个数的最大异或值(字典树)
求一个数是几位数并输出逆序数
求一个数是几位数并输出逆序数
63 0
|
6月前
两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。 比如,11/13=6=>0.846153846153… 其循环节为[846153] 共有6位。
两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。 比如,11/13=6=>0.846153846153… 其循环节为[846153] 共有6位。
|
6月前
|
资源调度
daimayuan 三进制循环(树形dp)
daimayuan 三进制循环(树形dp)
41 0
|
6月前
[leetcode 数位运算] 2939. 最大异或乘积 M
[leetcode 数位运算] 2939. 最大异或乘积 M
|
11月前
|
算法 测试技术 C#
C++二分查找算法的应用:最小好进制
C++二分查找算法的应用:最小好进制
wustojc求三位整数的逆序数
wustojc求三位整数的逆序数
55 0