LeetCode简单题:171. Excel表列序号(Python,C++,Java)

一.解法

https://leetcode-cn.com/problems/excel-sheet-column-number/
要点:进制转换
这题比168. Excel表列名称简单因为是正向的不用考虑168题的错位减一,直接利用公式循环计算即可,也可以哈希表把A-Z映射到1-26再计算,具体公式为当前字母*pow(26,length-1-i)的遍历总合,length表示string长度,i从0开始表示第几位(从左到右)。
Python,C++,Java都用了相同的进制转换法。

二.Python实现

class Solution:
    def titleToNumber(self, s: str) -> int:
        l = len(s)
        value = 0
        hashmap = {}
        for i in range(1, 27):
            hashmap[chr(i+64)] = i
        i=0
        for ch in s:  
            value +=  hashmap[ch] * 26**(l-1-i)
            i+=1
                
        return value

三.C++实现

class Solution {
public:
    int titleToNumber(string s) {
        int answer=0;
        int length=s.size();
        for(int i=0;i<length;i++){
            answer+=(s[i]-64)*pow(26,length-i-1);
        }
        return answer;

    }
};

四.java实现

class Solution {
    public int titleToNumber(String s) {
        int answer=0;
        int length=s.length();
        for(int i=0;i<length;i++){
            answer+=((int)(s.charAt(i))-64)*Math.pow(26,length-i-1);
        }
        return answer;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容