Excelテーブルの列名

1.需要

  • 正の整数を指定すると、対応する列名をExcelテーブルに返します。

例えば、

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

例1:

入力: 1
出力:「A」

例2:

入力: 28
出力:「AB」

例3:

入力: 701
出力: "ZY"

二、基本変換法

2.1思考分析

  1. A〜Zは16進数のFに例えられます。A〜、A〜は、Zが1〜26の数値を表す場合、10進数を変換する対象が16進数の26 A〜Zを表すことを意味しx_i 、i-を表すために使用ます。  26ベースシステムのthビット、次に:
  2. 一般式: 、...... + x_4 * 26 ^ 3 + x_3 * 26 ^ 2 + x_2 * 26 ^ 1 + x_1 * 26 ^ 0 = nこのときx_iの範囲は 1〜26なので、x1が必要です。方程式の両側の26の余りがx1を取得できない場合、この問題を解決するために、の両側から1を引くことができます。同時に方程式が得られるので、次のようになります...... + x_4 * 26 ^ 3 + x_3 * 26 ^ 2 + x_2 * 26 ^ 1 +(x_1-1)* 26 ^ 0 = n-1。このように、x1-1の範囲は0〜25であり、方程式の両側の26の剰余はx1、つまりx1 =(n-1)を得ることができます。 %26 + 1;
  3. 同様に、x2を見つけるのに便利なように、方程式の両側で同時に26を除算してx1を削除します。したがって、x2、x3などの方法は2、3を繰り返すことです。

2.2コードの実装

class Solution {
    public String convertToTitle(int n) {
        StringBuilder sb = new StringBuilder();
        while(n > 0) {
            n--;
            //这里将'A'看作1
            sb.append((char)(n % 26 + 'A'));
            n = n / 26;
        }
        sb.reverse();
        return sb.toString();
    }
}

2.3複雑さの分析

  • 時間計算量は、O(log_ {26} N)10進数を26変換することです。
  • スペースの複雑さはO(1)であり、戻り値は余分なスペースに含まれていません。

3.学習アドレス

著者:windliang

リンク:https//leetcode-cn.com/problems/excel-sheet-column-title/solution/xiang-xi-tong-su-de-si-lu-fen-xi-by-windliang-2/

おすすめ

転載: blog.csdn.net/Sruggle/article/details/113698482