Leetcode: Excel Sheet Column Number

来源:互联网 发布:网络行业都有哪些工作 编辑:程序博客网 时间:2024/05/18 02:45

Problem: 

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 


Idea:  It is like a conversion of number based on 26 to number based on 10.


My code:

public class Solution {    public int titleToNumber(String s) {        int result = 0;        int power = 0;        for (int i = s.length() - 1; i >= 0; i--) {            int num = charToInt(s.charAt(i));            result = result + caculate(num,power);            power++;        }        return result;              }public int charToInt(char c) {    int result = 0;        switch (c) {        case 'A':        result = 1;        break;        case 'B':        result = 2;        break;        case 'C':        result = 3;        break;        case 'D':        result = 4;        break;        case 'E':        result = 5;        break;        case 'F':        result = 6;        break;        case 'G':        result = 7;        break;        case 'H':        result = 8;        break;        case 'I':        result = 9;        break;        case 'J':        result = 10;        break;        case 'K':        result = 11;        break;        case 'L':        result = 12;        break;        case 'M':        result = 13;        break;        case 'N':        result = 14;        break;        case 'O':        result = 15;        break;        case 'P':        result = 16;        break;        case 'Q':        result = 17;        break;        case 'R':        result = 18;        break;        case 'S':        result = 19;        break;        case 'T':        result = 20;        break;        case 'U':        result = 21;        break;        case 'V':        result = 22;        break;        case 'W':        result = 23;        break;        case 'X':        result = 24;        break;        case 'Y':        result = 25;        break;        case 'Z':        result = 26;        break;               }        return result;    }     public int caculate (int num, int power) {        int base = 1;        while (power >= 1) {            base = base * 26;            power--;         }        return num * base;    }}



Other's code that is better and cleaner:


int result = 0;for (int i = 0; i < s.length(); result = result * 26 + (s.charAt(i) - 'A' + 1), i++);return result;



0 0