9、回文数(C#)

        这题非常的简单,简直跟之前我们做过的7、整数反转(C#)-CSDN博客大同小异,甚至比那一题更简单,下面让我们一起看看吧!

关卡九:回文数

        给你一个整数x,如果x是一个回文整数,返回true;否则,返回false。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121是回文,而123不是。

我的分析 

        为什么说这道题更简单呢?他只是让你判断是回文数还是不是回文数?其实你只需要找出不是回文数或者是回文数的情况都可以,找出所有不是回文数的,剩下的就都是回文数了,也可以这样判断,我也是这样判断的。

代码示例

public class Solution {
    public bool IsPalindrome(int x) {
        if(x<0) return false; //负数天然就不是回文数
        string s = x.ToString();
        int left = 0;
        int right = str.Length - 1;
        while(left<right)
        {
            if(str[left]!=str[right]) return false;
            left++;
            right--;
        }
        return true;   //排除不是回文数的情况,其它的都是回文数
    }
}

日程总结

        创作不易,还望大家多多点赞支持,小编在这里向各位浏览文章的观众献上深深的感谢!今天就到这里了,谢谢大家,下期再见!

  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答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的操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想摘月亮送给你

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值