168. Excel Sheet Column Title (Java)

題目

Given a positive integer, return its corresponding column title as appear in an Excel sheet.

For example:

    1 -> A
    2 -> B
    3 -> C
    ...
    26 -> Z
    27 -> AA
    28 -> AB

翻譯

給予一個正整數,回傳 Excel 中的行欄位置。

舉例:

    1 -> A
    2 -> B
    3 -> C
    ...
    26 -> Z
    27 -> AA
    28 -> AB

解法

Java

Solution 1.

這題就把它當成是一個十進位轉二十六進位的轉換,每個英文字母利用ASCii來轉換。

  • 進位轉換
  • Run Time: 0 ms
  • 時間複雜度: O(n)
  • 空間複雜度: O(1)
class Solution {
    public String convertToTitle(int n) {
        StringBuilder str=new StringBuilder();
        while(n>0) {
                n--;
                str.append((char)(n%26+'A'));
                n/=26;
        }
        return str.reverse().toString();
    }
}

C

Solution 1.

這題就把它當成是一個十進位轉二十六進位的轉換,每個英文字母利用ASCii來轉換,由於c語言沒有字串翻轉函式所以要手動翻轉資料。

  • 進位轉換
  • Run Time: 0 ms
  • 時間複雜度: O(n)
  • 空間複雜度: O(1)
char * convertToTitle(int n) {
  int index = 0, i = 0, j = 0;
  char * arr = (char * ) calloc(10000, sizeof(char));
  while (n > 0) {
    n--;
    arr[index++] = (char)(n % 26 + 'A');
    n /= 26;
  }
  arr[index] = '\0';
  for (i = 0, j = index - 1; i < j; i++, j--) {
    char temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
  }
  return arr;
}
Solution 2.

這題就把它當成是一個十進位轉二十六進位的轉換,每個英文字母利用ASCii來轉換,由於c語言沒有字串翻轉函式所以要手動翻轉資料。

  • 進位轉換
  • Run Time: 0 ms
  • 時間複雜度: O(n)
  • 空間複雜度: O(1)
char * convertToTitle(int n) {
  int index = 0, i = 0;
  char * arr = (char * ) calloc(10000, sizeof(char));
  while (n > 0) {
    n--;
    arr[index++] = (char)(n % 26 + 'A');
    n /= 26;
  }
  arr[index] = '\0';
  for (i = 0; i < index / 2; i++) {
    char temp = arr[index - i - 1];
    arr[index - i - 1] = arr[i];
    arr[i] = temp;
  }
  return arr;
}

results matching ""

    No results matching ""