最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2021年08月02日 14:35:28   作者:Grandyang  
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(168.求Excel表列名稱),本篇文章通過(guò)簡(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倍,以此類(lèi)推,可以求出各個(gè)位置上的字母。最后只需將整個(gè)字符串翻轉(zhuǎn)一下即可。我們先從最簡(jiǎn)單的來(lái)看,對(duì)于小于26的數(shù)字,那么我們只需要對(duì)26取余,然后減去1,加上字符A即可,但是對(duì)于26來(lái)說(shuō),如果還是這么做的話就會(huì)出現(xiàn)問(wèn)題,因?yàn)閷?duì)26取余是0,減去1后成為-1,加上字符A后,并不等于字符Z。所以對(duì)于能被26整除的數(shù)我們得分開(kāi)處理,所以就分情況討論一下吧,能整除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,寫(xiě)的更簡(jiǎn)潔一些。從上面的講解中我們得知,會(huì)造成這種不便的原因是能被26整除的數(shù)字,無(wú)法得到字符Z。那么我們用一個(gè)小trick,比如對(duì)于26來(lái)說(shuō),我們先讓n自減1,變成25,然后再對(duì)26取余,得到25,此時(shí)再加上字符A,就可以得到字符Z了。叼就叼在這對(duì)其他的不能整除26的數(shù)也是成立的,完美解決問(wèn)題,參見(jiàn)代碼如下:

解法二:

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

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

解法三:

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

類(lèi)似題目:

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語(yǔ)言數(shù)據(jù)結(jié)構(gòu)詳細(xì)解析二叉樹(shù)的操作

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)詳細(xì)解析二叉樹(shù)的操作

    二叉樹(shù)可以簡(jiǎn)單理解為對(duì)于一個(gè)節(jié)點(diǎn)來(lái)說(shuō),最多擁有一個(gè)上級(jí)節(jié)點(diǎn),同時(shí)最多具備左右兩個(gè)下級(jí)節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)。本文將詳細(xì)介紹一下C++中二叉樹(shù)的實(shí)現(xiàn)和遍歷,需要的可以參考一下
    2022-04-04
  • C++實(shí)現(xiàn)通訊錄管理系統(tǒng)項(xiàng)目

    C++實(shí)現(xiàn)通訊錄管理系統(tǒng)項(xiàng)目

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)通訊錄管理系統(tǒng)項(xiàng)目,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 實(shí)例詳解C++中指針與引用的區(qū)別

    實(shí)例詳解C++中指針與引用的區(qū)別

    引用是C++引入的重要機(jī)制(C語(yǔ)言沒(méi)有引用),它使原來(lái)在C中必須用指針來(lái)實(shí)現(xiàn)的功能有了另一種實(shí)現(xiàn)的選擇,在書(shū)寫(xiě)形式上更為簡(jiǎn)潔,那么引用的本質(zhì)是什么,它與指針又有什么關(guān)系呢?這篇文章主要給大家介紹了關(guān)于C++中指針與引用的區(qū)別,需要的朋友可以參考下
    2021-07-07
  • Linux下動(dòng)靜態(tài)庫(kù)的打包與使用指南(C/C++)

    Linux下動(dòng)靜態(tài)庫(kù)的打包與使用指南(C/C++)

    c++是面向?qū)ο蟮木幊陶Z(yǔ)言,比較方便實(shí)現(xiàn)某些第三方庫(kù),比如翻譯其他面向?qū)ο笳Z(yǔ)言的代碼,比c語(yǔ)言要方便的多,下面這篇文章主要給大家介紹了關(guān)于Linux下C/C++動(dòng)靜態(tài)庫(kù)的打包與使用的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • 詳解C++語(yǔ)言中std::array的神奇用法

    詳解C++語(yǔ)言中std::array的神奇用法

    本文的代碼都在C++17環(huán)境下編譯運(yùn)行。當(dāng)前主流的g++版本已經(jīng)能支持C++17標(biāo)準(zhǔn),但是很多版本(如gcc 7.3)的C++17特性不是默認(rèn)打開(kāi)的,需要手工添加編譯選項(xiàng)-std=c++17,具體內(nèi)容詳情跟隨小編一起學(xué)習(xí)吧
    2021-05-05
  • C語(yǔ)言實(shí)現(xiàn)求定積分的方法

    C語(yǔ)言實(shí)現(xiàn)求定積分的方法

    這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)求定積分的方法,涉及C語(yǔ)言操作相關(guān)數(shù)學(xué)函數(shù)的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • C++實(shí)現(xiàn)飛機(jī)大戰(zhàn)

    C++實(shí)現(xiàn)飛機(jī)大戰(zhàn)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)飛機(jī)大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • C++ 中構(gòu)造函數(shù)的實(shí)例詳解

    C++ 中構(gòu)造函數(shù)的實(shí)例詳解

    這篇文章主要介紹了C++ 中構(gòu)造函數(shù)的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • C++實(shí)現(xiàn)推箱子游戲

    C++實(shí)現(xiàn)推箱子游戲

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)推箱子游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • JetBrains?CLion永久激活超詳細(xì)教程(最新激活方法)

    JetBrains?CLion永久激活超詳細(xì)教程(最新激活方法)

    JetBrains?Clion?是一款專(zhuān)為?C/C++?開(kāi)發(fā)所設(shè)計(jì)的跨平臺(tái)?IDE,本文適用?JetBrains?CLion?v2019.3/3.1/3.2/3.3?永久激活,附破解補(bǔ)丁和激活碼,可以永久激活?Windows、MAC、Linux?下的?CLion,下面給大家分享JetBrains?CLion永久激活超詳細(xì)教程,感興趣的朋友一起看看吧
    2023-01-01

最新評(píng)論

洪雅县| 额尔古纳市| 安庆市| 财经| 庐江县| 祁门县| 高淳县| 满城县| 柞水县| 田阳县| 嘉善县| 库伦旗| 平利县| 临海市| 盈江县| 建昌县| 贵溪市| 深圳市| 东城区| 枞阳县| 青铜峡市| 临沭县| 理塘县| 都兰县| 五台县| 临汾市| 开阳县| 百色市| 仁化县| 黄浦区| 洪洞县| 连州市| 广宁县| 区。| 东方市| 淅川县| 井冈山市| 鄂托克前旗| 宁晋县| 拜城县| 当阳市|