Excel 시트 열 제목 Leetcode 솔루션

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

시스템 설계 면접 질문 너무 개방적이어서 올바른 준비 방법을 알기가 너무 어렵습니다. 이제 구매 후 Amazon, Microsoft 및 Adobe의 디자인 라운드를 해독할 수 있습니다. 이 책은. 매일 수정 하나 디자인 질문 그리고 나는 당신이 디자인 라운드를 깨뜨릴 수 있다고 약속합니다.

문제 정책

이 문제에서는 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