leetcodeブラシノート--Excelタイトルリスト名

件名の説明:

正の整数を考えると、それは、列名に対応するExcelの表を戻します

以下のような:

1:

2:B

28:AB

701:ZY

問題解決のアイデア:

leetcodeにマークされているこの質問は簡単ですので、私は、それは青銅だと思った私は王だった期待していなかった終えました。朝のヘッドが結ばれ、または理解するために考えられている師事。まだ迷って他の人の説明の正午の睡眠を読んで、最終的には7788を理解しています。私は(弟は大声でカザフスタンを言うの侵害を移動)し、自分の理解について話を、上に移動するコードを置きます

ACコード:

パブリック文字列convertToTitle1(int型N){ 
        文字列のTEMP = "" ;
        一方、(N> 0 ){
             チャー S =(CHAR)((N-1)%26 + 'A' )。
            TEMP =秒+ TEMP。
            N = (N-1) / 26 
        } 
        戻りTEMP。
    }

当初、私はそれが26個の質問の単純なバイナリ小数変換だと思ったし、その後の後に数回は、物事はそう単純ではありません見つかった壁に触れました。

コードは、2つのn-1で表されることに留意されたいです。

、文字A〜Zに対応する第1のn 1、1〜26桁を見るようにするとき、ベースポイント数n = 1〜26、A〜Z 0-25にそれを追加するときに変更されましたしたがって、再び進数のモジュロ基礎を減らす必要があります。それは文字S =(CHAR)(N%26 +書き込むことができない 'そのような書き込みとして、A'-1)、nが26で割り切れる場合、「Zなり'、これは '計算されますA'-1 = '@'。

第2のn-1に関しては、私はあなたが違いエクセルシーケンスと小数を気づいていないのか分かりません。小数ビットが1以上10以下フル取る、すなわち、10 1、10で表され、フルビット9を取ると言うことです。そして、Excelができ、このシーケンスは、それが一杯にして、27ビットの中にあり、ここで、Zはまた、非常に右の失われた26を表し、AZは、Aが26を表す表示されますが、それはビットに26を表しています。最も前いずれかを入力するだけ26 26の端部で消費されているので、したがって、26の倍数を防止するために、例えば、52は、BZなります。したがって、第2のn-1は、これを防ぐことです。

実は、私は最終的な分析では、この質問のファンの理由は、それが私たちの思考の慣性を満たしていないことだと思います。我々は、バイナリ、16進数、10進数などはそれぞれ0であり、この配列は、Excel 0、のみ1-26存在しない、それが(代わりにヘクス26の)27の一杯になります唯一の楽しみ。

 

おすすめ

転載: www.cnblogs.com/yingying7/p/11578855.html
おすすめ