题意:
给你一个整数 columnNumber
,返回它在 Excel
表中相对应的列名称。
例如:
A -> 1
B -> 2
C -> 3
…
Z -> 26
AA -> 27
AB -> 28
…
示例 1:
输入: columnNumber = 1
输出: “A”
示例 2:
输入: columnNumber = 28
输出: “AB”
示例 3:
输入: columnNumber = 701
输出: “ZY”
示例 4:
输入: columnNumber = 2147483647
输出: “FXSHRXW”
提示:
1 <= columnNumber <= 2^31 - 1
题目来源: https://leetcode.cn/problems/excel-sheet-column-title/description/
解题方法:
方法一:如果余数为0,增加了26所以在余数为0时,减一个26
/**
* @param Integer $columnNumber
* @return String
*/
function convertToTitle($columnNumber) {
$result = "";
$nums = range("A", "Y");
array_unshift($nums, "Z"); //array_unshift — 在数组开头插入一个或多个单元
while ($columnNumber != 0) {
$remain = $columnNumber % 26; //取余
if ($remain == 0) { //如果余数为0,增加了26所以在余数为0时,减一个26
$columnNumber = $columnNumber - 1;
}
$result = $nums[$remain] . $result;
$columnNumber = floor($columnNumber / 26);
}
return $result;
}
方法二:取模
/**
* @param Integer $columnNumber
* @return String
*/
function convertToTitle($columnNumber) {
//第二种
$result = "";
while ($columnNumber != 0) {
$columnNumber--;
$remain = $columnNumber % 26;
//ord — 转换字符串第一个字节为 0-255 之间的值
//chr — 从数字生成单字节字符串
$result = chr(ord('A') + $remain) . $result;
$columnNumber = floor($columnNumber / 26);
}
return $result;
}