题目链接: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()
}
}
这篇博客讨论了在解决LeetCode上的Excel表格列标题转换问题时遇到的错误和解决方案。原始代码中存在一个多余的条件判断,导致了不正确的结果。作者指出,只需在每次循环时直接减一即可得到正确的26进制表示,然后反转字符串以得到正确的列标题。通过修复这个细节,代码能够正确地将数字转换为Excel列标题。
732

被折叠的 条评论
为什么被折叠?



