LeetCode 노트: 171.Excel Sheet Column Number

1912 단어

제목:


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

대의:


제목 Excel Sheet Column Title과 관련하여 Excel에 표시된 열 제목에 해당하는 열 수를 되돌려줍니다.예를 들면: A->1B->2C->3...Z -> 26 AA -> 27 AB -> 28

생각:


우선 가장 간단한 것은 AZ가 각각 126이다.그리고 AA에서 AZ까지는 27~(26+26)입니다.AAA에서 AAZ까지는 2626+1~2626+26.N위 자모, 앞자리의 자모에 대응하는 수량의 총계는 26(n-1)이므로 하나의 공식을 총결해 낼 수 있다.여기에 우리가 현재 계산하고 있는 n자리 알파벳의 열수를 합치면 앞자리의 알파벳 수량은 총 26(n-1)이다. 이것을 startCount로 설정하고 현재 자리의 알파벳부터 계산한다. 계산 방법은 다음과 같다.
startCount + ('A' - 65)*26^(n-1) + ('A' - 65)*26^(n-2) + ... + ('A' - 65) + 1

이렇게 하면 코드로 요약하여 두 단계로 나누어 계산할 수 있다. 첫 번째 단계는 앞자리의 알파벳 수량을 총계하고 두 번째 단계는 현재 자리의 수량을 계산한다.

코드(Java):

public class Solution {
    public int titleToNumber(String s) {
        int count = 0;
        //  
        int startCount = 0;
        for (int i = 1; i < s.length(); i++) {
            startCount += Math.pow(26, i);
        }
        
        //  
        count += startCount;
        count += 1;
        
        //  :start + ('A' - 65)*26^(n-1) + ('A' - 65)*26^(n-2) + ... + ('A' - 65) + 1
        char[] sCharArr = s.toCharArray();
        for (int i = sCharArr.length - 1, j = 0; i >= 0; i--, j++) {
            count += (sCharArr[j] - 65) * Math.pow(26, i);
        }
        return count;
    }
}

타산지석:


가장 핫한 해결 방법은 세 줄의 코드만 있으면 계산 공식을 간소화하여 매우 간단한 계산 과정을 얻었다.
int result = 0;
for (int i = 0; i < s.length(); result = result * 26 + (s.charAt(i) - 'A' + 1), i++);
return result;

코드 줄 수를 극도로 절약한 거야.
집합:https://github.com/Cloudox/LeetCode-Record
작성자 홈페이지 보기

좋은 웹페이지 즐겨찾기