168. Excel表列名称
Posted lgz0921
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了168. Excel表列名称相关的知识,希望对你有一定的参考价值。
题目链接:https://leetcode-cn.com/problems/excel-sheet-column-title/
思路:可以很容易想到是26进制,但是当我们用26进制来做的时候,发现会有一定的出入,比如说 ZY -> 701 当我们用26进制来写的时候会输出AZY。为什么呢,这里说一下:
1. 701 % 26 = 25 此时我们拼接 Y 然后 701 / 26 = 26
2. 26 % 26 = 0 此时我们拼接 Z 然后 26 / 26 = 1
3. 1 % 26 = 1 此时我们拼接 A
4. 1 / 26 = 0 循环结束
5. 得到YZA 反转字符串返回 AZY
错误代码:
class Solution {
fun convertToTitle(columnNumber: Int): String {
var str = ""
var number = columnNumber
while (number != 0) {
//'A'.toInt() 可以转换为 'A'.code (此写法leetcode目前编译错误)
val temp = when (number % 26) {
0 -> 25
else -> number % 26 - 1
}
str = str.plus((temp + 'A'.toInt()).toChar())
number /= 26
}
return str.reversed()
}
}
可以看到思路没问题,细节上有些问题,中间还多了一个判断。所以我们考虑每次循环的时候先减一就可以了~~~~
还是上面那个例子:
1. 701 - 1 = 700 700 % 26 = 24 此时我们拼接 Y 然后 700 / 26 = 26
2. 26 - 1 = 25 25 % 26 = 25 此时我们拼接 Z 然后 25 / 26 = 0
3. 循环结束
4. 得到YZ 反转字符串返回 ZY
正确代码:
class Solution {
fun convertToTitle(columnNumber: Int): String {
var str = ""
var number = columnNumber
while (number != 0) {
//'A'.toInt() 可以转换为 'A'.code (此写法leetcode目前编译错误)
number -= 1
str = str.plus((number % 26 + 'A'.toInt()).toChar())
number /= 26
}
return str.reversed()
}
}
以上是关于168. Excel表列名称的主要内容,如果未能解决你的问题,请参考以下文章
168.Excel Sheet Column Title Excel表列名称