• Leetcode No.171 Excel Sheet Column Number Excel表格列数(c++实现)


    1. 题目

    1.1 英文题目

    Given a string columnTitle that represents the column title as appear in an Excel sheet, return its corresponding column number.

    1.2 中文题目

    给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回该列名称对应的列序号。

    1.3输入输出

    输入 输出
    columnTitle = "A" 1
    columnTitle = "AB" 28
    columnTitle = "ZY" 701
    columnTitle = "FXSHRXW" 2147483647

    1.4 约束条件

    • 1 <= columnTitle.length <= 7
    • columnTitle consists only of uppercase English letters.
    • columnTitle is in the range ["A", "FXSHRXW"].

    2. 分析

    2.1 一般算法

    这道题类似于26进制转化为十进制的问题,因此可以类比进制转换的“加权求和法”,具体代码如下:

    class Solution {
    public:
        int titleToNumber(string columnTitle) {
            int num = 0;
            for (int i = columnTitle.size() - 1; i >= 0; i--) {
                num += (columnTitle[i] - 'A' + 1) * pow(26, columnTitle.size() - 1 - i);
            }
            return num;
        }
    };
    

    2.2 优化求和算法

    考虑到pow函数时间复杂度较高,可利用递推进行求解。代码如下:

    class Solution {
    public:
        int titleToNumber(string columnTitle) {
            int num = 0;
            for (int i = 0; i < columnTitle.size(); i++) {
                num = columnTitle[i] - 'A' + 1 + num * 26;
            }
            return num;
        }
    };
    

    2.2 c++11优化算法

    对于循环部分,可以用c++11进行优化。代码如下:

    class Solution {
    public:
        int titleToNumber(string columnTitle) {
            int num = 0;
            for (auto element:columnTitle) {
                num = element - 'A' + 1 + num * 26;
            }
            return num;
        }
    };
    
    作者:云梦士
    本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    SDUT 1299 最长上升子序列
    HDU 1754 I Hate It
    SDUT 2080 最长公共子序列问题
    HDU 1102 Constructing Roads HDU1863 畅通工程
    HDU 1166 敌兵布阵
    HDU 1874 畅通工程续
    准备翻译Windows 8 动手实验系列教程
    Windows 8 动手实验系列教程 简介
    一起学Windows phone7开发(十九. Windows phone7发布)
    一起学Windows phone7(十六. windows phone 7 developer tool RTM 发布)
  • 原文地址:https://www.cnblogs.com/yunmeng-shi/p/15089564.html
Copyright © 2020-2023  润新知