zoukankan      html  css  js  c++  java
  • Leetcode 171. Excel Sheet Column Number

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

    For example:

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


    思路:首先看
    A: 1 * 26 ^ 0;
    B: 2 * 26 ^ 0;
    ...
    AA: 1 * 26 ^ 1 + 1 * 26 ^ 0 = 27;
    AB: 1 * 26 ^ 1 + 2 * 26 ^ 0 = 28;
    ...
    BA: 2 * 26 ^1 + 1 * 26 ^ 0 = 53;
    ...
    规律就是假如是一个长度为2的字符串,那么对应的数为:(s[0] - 'A' +1) * 26 ^ 1 + (s[1] - 'A' + 1) * 26 ^ 0;
    假如是长度为n的字符串,那么对应的数为:(s[0] - 'A' + 1) * 26 ^ (n-1) + ... + (s[n-1] - 'A' + 1) * 26 ^ 0;
    。。。好吧,由此可以看出,这是求一个n-1次多项式的和
    一种方法就是直接求出每一项的值,再求和。这里时间复杂度是很高的,因为26 ^ (n-1)重复计算了。
    还有一种方法就是利用霍纳法则(也就是秦九韶算法)了。(可在文章分类-算法分析中找到有关霍纳法则的具体原理)。
     1 class Solution {
     2 public:
     3     int titleToNumber(string s) {
     4         int len = s.length();
     5         int ans = 0;
     6         for(int i = 0; i < len; i++){
     7             int tmp = s[i] - 'A' + 1;
     8             ans = ans * 26 + tmp;
     9         }
    10         return ans;
    11     }
    12 };


  • 相关阅读:
    课后作业一
    软工假期预习作业
    Spark2.0自定义累加器
    JAVA hashmap知识整理
    Spark 累加器
    RDD与DataFrame的转换
    Scala笔记整理
    Spark RDD
    Hbase的flush机制
    Spring源码-ImportSelector实现分析
  • 原文地址:https://www.cnblogs.com/qinduanyinghua/p/5848413.html
Copyright © 2011-2022 走看看