zoukankan      html  css  js  c++  java
  • 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;
        }
    };
    
    作者:云梦士
    本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    WCF进阶01 服务配置
    资源学习备忘 04
    .NET IoC主流框架 01:Castle Windsor Registering components onebyone
    IIS URL重写模块和ASP.NET路由组件比较
    资源学习备忘 03
    开源组件DockPanel Suite使用
    Dockable Window开源组件分享
    WCF进阶02 服务承载
    Prometheus 初探和配置(安装测试)
    TF31003错误的解决办法
  • 原文地址:https://www.cnblogs.com/yunmeng-shi/p/15089564.html
Copyright © 2011-2022 走看看