LeetCode(171) Excel Sheet Column Number

8149 단어

제목


Related to question Excel Sheet Column Title
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 
...
AAA -> 703
AAB -> 704

Credits: Special thanks to @ts for adding this problem and creating all test cases.

분석


Execl을 사용한 적이 있는 사람들은 모두 알고 있다. 상술한 자모는 그 열의 이름이고 숫자는 몇 번째 열을 대표한다. 본 문제는 A~Z로 구성된 문자열 서열을 정하고 Execl표에 있는 열의 수를 구하는 것이다.위에서 제시한 예시에서 규칙을 알 수 있는데 그 중에서 A~Z는 숫자 1~26을 대표한다. 그러면 문자열은 어떻게 구하는가?예를 들어 (낮은 위치에서 높은 위치로 계산):
A=1∗260=1 A=2∗260=2 ... AA=1∗260+1∗261=27 AB=2∗260+1∗261=28 ... AAA=1∗260+1∗261+1∗262=703 AAB=2∗260+1∗261+1∗262=704

AC 코드

class Solution {
public:
    int titleToNumber(string s) {
        int len = strlen(s.c_str());
        if (len == 0)
            return 0;

        int count = 0 , p = 0;
        for (int i = len-1; i >= 0; i--)
        {
            count = count + Num(s[i]) * pow(26, p);
            p++;
        }
        return count;
    }

    int Num(char c)
    {
        switch (c)
        {
        case 'A':
            return 1; break;
        case 'B':
            return 2; break;
        case 'C':
            return 3; break;
        case 'D':
            return 4; break;
        case 'E':
            return 5; break;
        case 'F':
            return 6; break;
        case 'G':
            return 7; break;
        case 'H':
            return 8; break;
        case 'I':
            return 9; break;
        case 'J':
            return 10; break;
        case 'K':
            return 11; break;
        case 'L':
            return 12; break;
        case 'M':
            return 13; break;
        case 'N':
            return 14; break;
        case 'O':
            return 15; break;
        case 'P':
            return 16; break;
        case 'Q':
            return 17; break;
        case 'R':
            return 18; break;
        case 'S':
            return 19; break;
        case 'T':
            return 20; break;
        case 'U':
            return 21; break;
        case 'V':
            return 22; break;
        case 'W':
            return 23; break;
        case 'X':
            return 24; break;
        case 'Y':
            return 25; break;
        case 'Z':
            return 26; break;
        default:
            return 0;  break;
        }
    }
};

GitHub 테스트 프로그램 소스

좋은 웹페이지 즐겨찾기