iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#算法之回文数
  • 793
分享到

C#算法之回文数

2024-04-02 19:04:59 793人浏览 安东尼
摘要

回文数 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121

回文数

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

示例 1:

输入: 121
输出: true

示例 2:

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

示例 3:

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

进阶:

你能不将整数转为字符串来解决这个问题吗?

代码模板

public class Solution {
    public bool IsPalindrome(int x) {
        
    }
}

笔者的代码

运行时间在120ms左右,笔者的思路是:如果一个数字的反序还是等于这个数,那么这个数就是回文数。

以下代码无法解决反序后可能溢出,可以利用上一题的代码进行溢出检查。

当然,一个int类型的数,如果是回文,那么他的反序肯定不会溢出,反之其反序发生溢出则肯定不是回文数。

public class Solution
    {
        public bool IsPalindrome(int x)
        {
            if (x < 0) return false;
            int xx = x;
            int num = 0;  //x的反序
            while (xx != 0)    //求反序
            {
                int i = xx % 10;
                xx = xx / 10;
                num = num * 10 + i;
            }
            if (x == num)       //如果x的反序num==x,那么这个数字是回文数
                return true;

            else
                return false;

        }
    }

 加try-catch,耗时增加 10~20ms

try { 
            while (xx != 0)
            {
                int i = xx % 10;
                xx = xx / 10;
                num = num * 10 + i;
            }
            }
            catch
            {
                return false;
            }

官方这道题给出了示例代码,耗时120ms左右,思路是只反序一半,反序后的原始数、反序一半的数进行比较,也就不用检查溢出。

public 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;
    }
}

别人用字符串方式进行判断(虽然题目说不能用string),耗时150-180ms,不太稳定

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

到此这篇关于C#算法之回文数的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C#算法之回文数

本文链接: https://www.lsjlt.com/news/162783.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#算法之回文数
    回文数 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121...
    99+
    2022-11-12
  • C#算法之两数之和
    题目 给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每...
    99+
    2022-11-12
  • C++算法学习之回溯法的应用
    目录回溯1实验题目:n皇后实验题目:符号三角形回溯 堂练实验题目:森林迷宫实验题目:地图着色回溯1 实验题目:n皇后 题目描述: N皇后的排列,每行一个不冲突;N<=13。 输...
    99+
    2022-11-13
  • C#算法之整数反转
    题目 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321  示例 2: 输入: -123 输出:...
    99+
    2022-11-12
  • C语言算法打卡回文串验证算法题解
    目录概念Leetcode例题:1.回文串的验证2.有效回文3.回文排列点杀回文排列点杀回文验证(有效性)对撞指针概念 所谓回文串,就是字符串反转以后和原串相同,如 abba 和 li...
    99+
    2022-11-13
  • C#算法之罗马数字转整数
    罗马数字转整数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I ...
    99+
    2022-11-13
  • C++算法精讲之贪心算法
    目录选择排序平衡字符串买股票的最佳时机跳跃游戏钱币找零多机调度问题活动选择无重叠区间选择排序 我们熟知的选择排序,其采用的就是贪心策略。 它所采用的贪心策略即为每次从未排序的数据中选...
    99+
    2022-11-13
  • java回文数算法怎么使用
    要判断一个数字是否为回文数,可以使用以下算法: 将数字转换为字符串。 使用两个指针,一个指向字符串的开头,一个指向字符串的末尾。 ...
    99+
    2023-10-23
    java
  • C#算法之散列表
    目录1.散列函数正整数浮点数字符串组合键将 HashCode() 的返回值转化为一个数组索引自定义的 HashCode软缓存2.基于拉链法的散列表散列表的大小删除操作有序性相关的操作...
    99+
    2022-11-13
  • C++回溯算法之深度优先搜索详细介绍
    目录一、前言二、基本概念1.简单介绍2. 官方概念三、动图分析四、模板框架五、例题分析组合问题题干描述思路分析一、前言 本文介绍了经典搜索算法: 深度优先搜索(DFS) 两个小故事:...
    99+
    2023-01-13
    C++深度优先搜索 C++深度优先搜索算法
  • 算法15. 三数之和_(c语言版)
    1. 题目描述给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums...
    99+
    2023-06-03
  • C#算法如何实现两数之和
    小编给大家分享一下C#算法如何实现两数之和,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!题目给定一个整数数组 nums和一个目标值 targe...
    99+
    2023-06-26
  • C语言算法练习之数组求素数
    目录一、问题描述二、算法实例编译环境三、算法实例实现过程3.1、包含头文件3.2、声明数组3.3、声明相关变量3.4、数组赋值3.5、 输出数组里面元素的值3.6、求素数、素数和、最...
    99+
    2022-11-13
  • C#算法之实现阿姆斯特朗数
    阿姆斯特朗数 阿姆斯特朗数是一个数字,等于每个数字的幂乘以总位数。 例如,诸如0、1、153、370、371和407、1634、8208、9474的数字是阿姆斯特朗数。 例如: 37...
    99+
    2022-11-13
  • C#算法之各位相加
    各位相加 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。 示例: 输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 ...
    99+
    2022-11-12
  • C++算法学习之贪心算法的应用
    目录贪心1实验题目:减肥的小K1实验题目:最小跳数实验题目:排队接水贪心-堂练实验题目: 区间问题1实验题目:种树实验题目:智力大冲实验题目:删除数字II贪心1 实验题目:减肥的小K...
    99+
    2022-11-13
  • 回溯算法之怎么求组合
    本篇内容介绍了“回溯算法之怎么求组合”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!回溯算法大家是不是已经快...
    99+
    2022-10-19
  • C#图表算法之有向图
    目录1.术语2.有向图的数据类型有向图表示有向图取反顶点的符号名3.有向图的可达性4.环和有向无环图调度问题有向图中的环顶点的深度优先次序与拓扑排序拓扑排序5.有向图中的强连通性强连...
    99+
    2022-11-13
  • C#图表算法之无向图
    目录1.相关术语2.表示无向图的数据结构3.图的处理算法的设计模式4.深度优先搜索5.寻找路径实现6.广度优先搜索实现7.连通分量实现union-find 算法8.符号图实...
    99+
    2022-11-13
  • C++实现LeetCode(132.拆分回文串之二)
    [LeetCode] 132.Palindrome Partitioning II 拆分回文串之二 Given a string s, partition s&#...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作