Excel 시트 열 제목 Leetcode 솔루션

난이도 쉽게
자주 묻는 질문 어도비 벽돌 구글
알고리즘 코딩 인터뷰 인터뷰 준비 리트코드 LeetCodeSolutions 수학 넘버 시스템조회수 48

문제 정책

이 문제에서는 Excel 시트의 열 번호를 나타내는 양의 정수가 주어지며, Excel 시트에 나타나는 해당 열 제목을 반환해야합니다.

Excel 시트 열 제목 Leetcode 솔루션

#1

28
"AB"

#2

701
"ZY"

접근

이 문제는 우리가해야하는 문제의 반대입니다. 열 제목에서 열 번호를 찾으십시오.
그래서이 문제에서 우리는 26 진법 숫자를 10 진법 인 10 진법 숫자로 변환했습니다. 이 문제에서는 열 번호에서 열 제목을 찾아야합니다. 그래서 여기서 우리는 반대로해야합니다. 즉, 26 진수 (XNUMX 진수)를 XNUMX 진수 시스템의 숫자로 변환해야합니다.

우리는 일반적인 숫자 체계에서 base-26이 26에서 0까지의 값을 나타내는 25 개의 문자를 가져야한다는 것을 알고 있습니다. 그러나 Excel 시트 열 제목에서 이것은 약간 다릅니다. 1에서 26까지의 값을 나타냅니다. 따라서 AZ 문자를 0-25로 사용하면 다음 방정식과 같이 표시됩니다.

문자열을 ABZ로 설정하면 숫자 n에 해당합니다.
n = (A + 1) * 26 ^ 2 + (B + 1) * 26 ^ 1 + (Z + 1) * 26 ^ 0

왜 (A + 1)? char 시스템에서 'A'는 0이지만 Excel 시스템에서는 'A'가 XNUMX이기 때문입니다. 모든 문자는 여분의 문자를 얻습니다.

따라서 마지막 문자 즉 Z를 얻기 위해 먼저 마이너스 1 즉 n–을 얻은 다음 n % 26을 얻습니다.
(n-1) % 26 = Z
이제 26으로 나누고 다음 문자에 대해 동일한 프로세스를 반복하십시오.
(n-1) / 26 = (A + 1) * 26 ^ 1 + (B + 1) * 26 ^ 0

암호알고리즘

  1. 문자를 저장하기 위해 빈 문자열을 만듭니다.
  2. n이 양수일 때 루프를 실행합니다.
    • n에서 1을 뺍니다.
    • n 모듈로 26을 수행하여 현재 문자를 가져옵니다.
    • n을 26으로 나눕니다.
  3. 이제 오른쪽에서 왼쪽으로 문자를 찾았으므로 결과 문자열을 뒤집습니다.
  4. 반전 된 문자열을 반환합니다.

실시

Excel Sheet Column Title Leetcode 솔루션 용 C ++ 프로그램

#include <bits/stdc++.h>
using namespace std;

string convertToTitle(int n) 
{        
    string ans;
    while(n>0)
    {
        --n;
        int d= n%26;
        n/=26;
        ans+= 'A'+d;            
    }
   reverse(ans.begin(),ans.end());
   return ans; 
}

int main() 
{
   cout<<convertToTitle(28) <<endl;
   return 0; 
}
AB

Excel 시트 열 제목 Leetcode 솔루션 용 Java 프로그램

class Rextester{
    
    public static String convertToTitle(int n) 
    {
        StringBuilder ans= new StringBuilder();
        while(n>0)
        {
            --n;
            int d= n%26;
            n/=26;
            ans.append((char)('A'+d));            
        }
        ans.reverse();
        return ans.toString(); 
    }
    
    public static void main(String args[])
    {    	
       System.out.println( convertToTitle(28)  ) ;
    }
}
AB

Excel Sheet Column Title Leetcode 솔루션에 대한 복잡성 분석

시간 복잡성

O (로그 (n)) : 여기서 n은 주어진 열 번호입니다. 우리는 각 반복에서 숫자를 26으로 나누고 있으므로 시간 복잡도는 O (log (n))가됩니다.

공간 복잡성 

O (1) : 결과를 저장하는 것 외에는 추가 공간을 사용하지 않습니다.

코멘트를 남겨

Translate »
1