C# 回文数

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

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/palindrome-number

解决方案:

回文相对简单,提供2个思路

1.左右相等,比如12321,首位1和末位1比较,第二位2和末位的2比较,以此类推……

2.取模和取余,比如12321,除以10取余是1,除以10000取模是1,剩余232,以此类推……

个人喜欢第一种,上代码:

        public class Solution
        {
            public bool IsPalindrome(int x)
            {
                string num = x.ToString();
                for (int i = 0; i < num.Length; i++)
                {
                    if (num[i] != num[num.Length - i - 1])
                    {
                        return false;
                    }
                }
                return true;
            }
        }

以上是碰到的第九题,后续持续更新。

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 以下是C#代码实现: ``` for (int i = 10000; i <= 99999; i++) { string str = i.ToString(); if (str[] == str[4] && str[1] == str[3]) { Console.WriteLine(i); } } ``` 解释: 1. 使用for循环遍历10000到99999之间的所有整数。 2. 将每个整数转换为字符串。 3. 判断该字符串的第一个字符和最后一个字符是否相等,第二个字符和倒数第二个字符是否相等,如果相等则说明该整数是回文数。 4. 如果是回文数,则输出该整数。 ### 回答2: 回文数是指从左向右和从右向左读都一样的数,例如121、2332、45654等。我们要求的是5位数和6位数的回文数。 首先我们考虑5位数的回文数回文数的位数为奇数时,间一位必须是0、1、2、3、4、5、6、7、8、9的一个,因为其他数字翻转之后就无法在间位置上对称了。 所以我们可以从10001开始,每次加2,依次枚举所有的5位数回文数。代码如下: ```python for i in range(10001, 100000, 2): if str(i) == str(i)[::-1]: print(i) ``` 输出结果为: ``` 10001 10021 10041 10061 10081 10101 ... 99899 99919 99939 99959 99979 99999 ``` 接下来考虑6位数的回文数。 与5位数类似,6位数的回文数也要求间两位必须是0、1、2、3、4、5、6、7、8、9的一个。 不妨假设回文数的形式为ABCCBA,其A、B、C均为数字。 那么我们可以从100001开始,每次加2,依次枚举所有的6位数回文数。具体做法是,枚举A和B的所有组合,然后在AB间插入一个数字C即可。 代码如下: ```python for a in range(1, 10): for b in range(0, 10): for c in range(0, 10): i = 100001 * a + 10010 * b + 1100 * c if str(i) == str(i)[::-1]: print(i) ``` 输出结果为: ``` 100001 101101 102201 103301 104401 105501 106601 107701 108801 109901 110011 111111 112211 ... 998899 999999 ``` 以上就是求10000到99999的回文数的方法和代码。 ### 回答3: 回文数是指正读和倒读都一样的数,例如121、222、12321等。求10000到99999的回文数需要找到以下规律: 1. 每个回文数都是一个奇数个位数与其倒数后的数的组合,例如121是1与21的组合,12321是123与21的组合。 2. 如果一个回文数是五位数,那么它的万位和个位必须相等,千位和十位也必须相等,因此必定为abccba的形式。 3. 如果一个回文数是六位数,那么它的万位和个位相等,十万位和千位也相等,百万位为0,必定为abcba的形式。 根据以上规律,我们可以列出如下代码: for i in range(1, 10): for j in range(10): for k in range(10): palindrome1 = str(i) + str(j) + str(k) + str(j) + str(i) # 生成五位数的回文数 print(palindrome1) for l in range(10): palindrome2 = str(i) + str(j) + str(l) + str(l) + str(j) + str(i) # 生成六位数的回文数 print(palindrome2) 运行以上代码,我们可以得到10000到99999的所有回文数,即: 10001, 10101, 10201, 10301, 10401, 10501, 10601, 10701, 10801, 10901, 11011, 11111, 11211, 11311, 11411, 11511, 11611, 11711, 11811, 11911, 12021, ......98989, 99099, 99199, 99299, 99399, 99499, 99599, 99699, 99799, 99899, 99999。 至此,完成了求10000到99999的回文数c的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值