亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#算法之回文數(shù)

 更新時(shí)間:2022年01月18日 08:30:03   作者:癡者工良  
這篇文章介紹了C#算法之回文數(shù),文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

回文數(shù)

判斷一個(gè)整數(shù)是否是回文數(shù)?;匚臄?shù)是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數(shù)。

示例 1:

輸入: 121
輸出: true

示例 2:

輸入: -121
輸出: false
解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是一個(gè)回文數(shù)。

示例 3:

輸入: 10
輸出: false
解釋: 從右向左讀, 為 01 。因此它不是一個(gè)回文數(shù)。

進(jìn)階:

你能不將整數(shù)轉(zhuǎn)為字符串來解決這個(gè)問題嗎?

代碼模板

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

筆者的代碼

運(yùn)行時(shí)間在120ms左右,筆者的思路是:如果一個(gè)數(shù)字的反序還是等于這個(gè)數(shù),那么這個(gè)數(shù)就是回文數(shù)。

以下代碼無法解決反序后可能溢出,可以利用上一題的代碼進(jìn)行溢出檢查。

當(dāng)然,一個(gè)int類型的數(shù),如果是回文,那么他的反序肯定不會(huì)溢出,反之其反序發(fā)生溢出則肯定不是回文數(shù)。

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,那么這個(gè)數(shù)字是回文數(shù)
                return true;

            else
                return false;

        }
    }

 加try-catch,耗時(shí)增加 10~20ms

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

官方這道題給出了示例代碼,耗時(shí)120ms左右,思路是只反序一半,反序后的原始數(shù)、反序一半的數(shù)進(jìn)行比較,也就不用檢查溢出。

public class Solution {
    public bool IsPalindrome(int x) {
        // 特殊情況:
        // 如上所述,當(dāng) x < 0 時(shí),x 不是回文數(shù)。
        // 同樣地,如果數(shù)字的最后一位是 0,為了使該數(shù)字為回文,
        // 則其第一位數(shù)字也應(yīng)該是 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;
        }

        // 當(dāng)數(shù)字長(zhǎng)度為奇數(shù)時(shí),我們可以通過 revertedNumber/10 去除處于中位的數(shù)字。
        // 例如,當(dāng)輸入為 12321 時(shí),在 while 循環(huán)的末尾我們可以得到 x = 12,revertedNumber = 123,
        // 由于處于中位的數(shù)字不影響回文(它總是與自己相等),所以我們可以簡(jiǎn)單地將其去除。
        return x == revertedNumber || x == revertedNumber/10;
    }
}

別人用字符串方式進(jìn)行判斷(雖然題目說不能用string),耗時(shí)150-180ms,不太穩(wěn)定

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

到此這篇關(guān)于C#算法之回文數(shù)的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#實(shí)現(xiàn)計(jì)算器窗體程序

    C#實(shí)現(xiàn)計(jì)算器窗體程序

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)計(jì)算器窗體程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 詳解C#中yield關(guān)鍵字的用法

    詳解C#中yield關(guān)鍵字的用法

    yield?關(guān)鍵字的用途是把指令推遲到程序?qū)嶋H需要的時(shí)候再執(zhí)行,這個(gè)特性允許我們更細(xì)致地控制集合每個(gè)元素產(chǎn)生的時(shí)機(jī),那么下面就一起來看下怎么用?yield?關(guān)鍵字吧
    2023-07-07
  • Unity ScrollView實(shí)現(xiàn)無限滑動(dòng)效果

    Unity ScrollView實(shí)現(xiàn)無限滑動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了Unity ScrollView實(shí)現(xiàn)無限滑動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C#.NET學(xué)習(xí)筆記5 C#中的條件編譯

    C#.NET學(xué)習(xí)筆記5 C#中的條件編譯

    條件編譯是C#比Java多出的東西,但我跟前輩請(qǐng)教后,他們都說條件編譯在實(shí)際的項(xiàng)目開發(fā)中不怎么使用.鑒于是新內(nèi)容,我還是做做筆記,理解一下好了
    2012-11-11
  • C#控制鍵盤按鍵的常用方法

    C#控制鍵盤按鍵的常用方法

    這篇文章主要介紹了C#控制鍵盤按鍵的常用方法,涉及C#針對(duì)鍵盤大寫、滾動(dòng)、數(shù)字的開啟與鎖定等功能,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-05-05
  • Unity實(shí)現(xiàn)鼠標(biāo)或者手指點(diǎn)擊模型播放動(dòng)畫

    Unity實(shí)現(xiàn)鼠標(biāo)或者手指點(diǎn)擊模型播放動(dòng)畫

    這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)鼠標(biāo)或者手指點(diǎn)擊模型播放動(dòng)畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • 詳解C#如何使用WASM跨語言調(diào)用

    詳解C#如何使用WASM跨語言調(diào)用

    WebAssembly(簡(jiǎn)稱Wasm)是一種用于基于堆棧的虛擬機(jī)的二進(jìn)制指令格式,這篇文章主要介紹了C#如何使用WASM跨語言調(diào)用,需要的小伙伴可以了解一下
    2023-08-08
  • DevExpress GridControl實(shí)現(xiàn)根據(jù)RowIndex和VisibleColumnsIndex來獲取單元格值

    DevExpress GridControl實(shí)現(xiàn)根據(jù)RowIndex和VisibleColumnsIndex來獲取單元格

    這篇文章主要介紹了DevExpress GridControl實(shí)現(xiàn)根據(jù)RowIndex和VisibleColumnsIndex來獲取單元格值,需要的朋友可以參考下
    2014-08-08
  • 詳解c# SpinWait

    詳解c# SpinWait

    這篇文章主要介紹了c# SpinWait的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c# 編程,感興趣的朋友可以了解下
    2020-10-10
  • C# string轉(zhuǎn)換為幾種不同編碼的Byte[]的問題解讀

    C# string轉(zhuǎn)換為幾種不同編碼的Byte[]的問題解讀

    這篇文章主要介紹了C# string轉(zhuǎn)換為幾種不同編碼的Byte[]的問題解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02

最新評(píng)論