欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++實(shí)現(xiàn)LeetCode(168.求Excel表列名稱)

 更新時(shí)間:2021年08月02日 14:35:28   作者:Grandyang  
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(168.求Excel表列名稱),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

[LeetCode] 168.Excel Sheet Column Title 求Excel表列名稱

Given a positive integer, return its corresponding column title as appear in an Excel sheet.

For example:

    1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB
...

Example 1:

Input: 1
Output: "A"

Example 2:

Input: 28
Output: "AB"

Example 3:

Input: 701
Output: "ZY"

Credits:
Special thanks to @ifanchu for adding this problem and creating all test cases.

此題和 Excel Sheet Column Number 是一起的,但是我在這題上花的時(shí)間遠(yuǎn)比上面一道多,其實(shí)原理都一樣,就是一位一位的求,此題從低位往高位求,每進(jìn)一位,則把原數(shù)縮小26倍,再對(duì)26取余,之后減去余數(shù),再縮小26倍,以此類推,可以求出各個(gè)位置上的字母。最后只需將整個(gè)字符串翻轉(zhuǎn)一下即可。我們先從最簡(jiǎn)單的來看,對(duì)于小于26的數(shù)字,那么我們只需要對(duì)26取余,然后減去1,加上字符A即可,但是對(duì)于26來說,如果還是這么做的話就會(huì)出現(xiàn)問題,因?yàn)閷?duì)26取余是0,減去1后成為-1,加上字符A后,并不等于字符Z。所以對(duì)于能被26整除的數(shù)我們得分開處理,所以就分情況討論一下吧,能整除26的,直接在結(jié)果res上加上字符Z,然后n自減去26;不能的話,就按照一般的處理,n要減去這個(gè)余數(shù)。之后n要自除以26,繼續(xù)計(jì)算下去,代碼如下:

解法一:

class Solution {
public:
    string convertToTitle(int n) {
        string res = "";
        while (n) {
            if (n % 26 == 0) {
                res += 'Z';
                n -= 26;
            } else {
                res += n % 26 - 1 + 'A';
                n -= n % 26;
            }
            n /= 26;
        }
        reverse(res.begin(), res.end());
        return res;
    }
};

然后我們可以對(duì)上面對(duì)方法進(jìn)行下優(yōu)化,合并if和else,寫的更簡(jiǎn)潔一些。從上面的講解中我們得知,會(huì)造成這種不便的原因是能被26整除的數(shù)字,無法得到字符Z。那么我們用一個(gè)小trick,比如對(duì)于26來說,我們先讓n自減1,變成25,然后再對(duì)26取余,得到25,此時(shí)再加上字符A,就可以得到字符Z了。叼就叼在這對(duì)其他的不能整除26的數(shù)也是成立的,完美解決問題,參見代碼如下:

解法二:

class Solution {
public:
    string convertToTitle(int n) {
        string res;
        while (n) {
            res += --n % 26 + 'A';
            n /= 26;
        }
        return string(res.rbegin(), res.rend());
    }
};

這道題還可以用遞歸來解,而且可以喪心病狂的壓縮到一行代碼來解:

解法三:

class Solution {
public:
    string convertToTitle(int n) {
        return n == 0 ? "" : convertToTitle(n / 26) + (char)(--n % 26 + 'A');
    }
};

類似題目:

Excel Sheet Column Number

參考資料:

https://leetcode.com/problems/excel-sheet-column-title/

https://leetcode.com/problems/excel-sheet-column-title/discuss/51399/Accepted-Java-solution

https://leetcode.com/problems/excel-sheet-column-title/discuss/51398/My-1-lines-code-in-Java-C%2B%2B-and-Python

https://leetcode.com/problems/excel-sheet-column-title/discuss/51421/Share-my-simple-solution-just-a-little-trick-to-handle-corner-case-26

到此這篇關(guān)于C++實(shí)現(xiàn)LeetCode(168.求Excel表列名稱)的文章就介紹到這了,更多相關(guān)C++實(shí)現(xiàn)求Excel表列名稱內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++中的類型轉(zhuǎn)換static_cast、dynamic_cast、const_cast和reinterpret_cast總結(jié)

    C++中的類型轉(zhuǎn)換static_cast、dynamic_cast、const_cast和reinterpret_cas

    這篇文章主要介紹了C++中的類型轉(zhuǎn)換static_cast、dynamic_cast、const_cast和reinterpret_cast總結(jié),需要的朋友可以參考下
    2014-10-10
  • C語言之陷阱與缺陷詳解

    C語言之陷阱與缺陷詳解

    本片文章是對(duì)C++中陷阱與缺陷進(jìn)行了詳細(xì)的分析介紹,小編覺得本片文章講解的非常詳細(xì),需要的朋友參考下,希望能夠給你帶來幫助
    2021-09-09
  • c++ fstream 文件追加模式示例詳解

    c++ fstream 文件追加模式示例詳解

    本文給大家介紹c++ fstream 文件追加模式示例詳解,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-10-10
  • C語言輾轉(zhuǎn)相除法求2個(gè)數(shù)的最小公約數(shù)

    C語言輾轉(zhuǎn)相除法求2個(gè)數(shù)的最小公約數(shù)

    輾轉(zhuǎn)相除法最大的用途就是用來求兩個(gè)數(shù)的最大公約數(shù)。下面通過本文給大家介紹C語言輾轉(zhuǎn)相除法求2個(gè)數(shù)的最小公約數(shù),非常不錯(cuò),感興趣的朋友一起看看吧
    2016-12-12
  • C語言內(nèi)存泄露很嚴(yán)重的解決方案

    C語言內(nèi)存泄露很嚴(yán)重的解決方案

    這篇文章主要介紹了C語言內(nèi)存泄露很嚴(yán)重的解決方案,預(yù)防內(nèi)存泄漏問題有多種方法,比如加強(qiáng)代碼檢視、工具檢測(cè)和內(nèi)存測(cè)試等,下面文章總結(jié)內(nèi)容需要的小伙伴可以參考一下
    2022-05-05
  • 你真的懂C++中的namespace用法

    你真的懂C++中的namespace用法

    命名空間(namespace)為防止名字沖突提供了更加可控的機(jī)制,命名空間分割了全局命名空間,其中每個(gè)命名空間是一個(gè)作用域,今天通過本文給大家分享C++中namespace用法,感興趣的朋友一起看看吧
    2021-06-06
  • C語言熱門考點(diǎn)結(jié)構(gòu)體與內(nèi)存對(duì)齊詳解

    C語言熱門考點(diǎn)結(jié)構(gòu)體與內(nèi)存對(duì)齊詳解

    在掌握基本的結(jié)構(gòu)體使用后,我們?cè)诿嬖嚭痛笮捅荣愔谐3?huì)遇到一個(gè)熱門考點(diǎn):結(jié)構(gòu)體內(nèi)存對(duì)齊,也就是計(jì)算結(jié)構(gòu)體大小。接下來請(qǐng)跟著筆者一起來學(xué)習(xí)這塊知識(shí)點(diǎn)吧
    2021-10-10
  • 用純C語言實(shí)現(xiàn)貪吃蛇游戲

    用純C語言實(shí)現(xiàn)貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了用純C語言實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C++構(gòu)造函數(shù)和析構(gòu)函數(shù)的使用與講解

    C++構(gòu)造函數(shù)和析構(gòu)函數(shù)的使用與講解

    今天小編就為大家分享一篇關(guān)于C++構(gòu)造函數(shù)和析構(gòu)函數(shù)的使用與講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • C語言實(shí)現(xiàn)打磚塊游戲

    C語言實(shí)現(xiàn)打磚塊游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)打磚塊游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05

最新評(píng)論