LeetCode 노트: 171.Excel Sheet Column Number
제목:
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
작성자 홈페이지 보기
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.