[LeetCode] 168. Excel Sheet Column Title + 171. Excel Sheet Column Number

168. Excel Sheet Column Title

Given an integer columnNumber, return its corresponding column title as it appears in an Excel sheet.

For example:

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

Example 1:

Input: columnNumber = 1
Output: "A"

Example 2:

Input: columnNumber = 28
Output: "AB"

Example 3:

Input: columnNumber = 701
Output: "ZY"

Constraints:

  • 1 <= columnNumber <= 231 - 1

给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/excel-sheet-column-title
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

因为字母是26进制的,所以当我们看到一个数字的时候,我们会很自然地想到去 mod26 然后转换成字母。但是因为 26 个字母对应的数字是 1-26 而不是 0-25 所以需要记得先减去 1 才能做转换的动作。

时间O(n)

空间O(1)

Java实现

 1 class Solution {
 2     public String convertToTitle(int n) {
 3         StringBuilder sb = new StringBuilder();
 4         while (n > 0) {
 5             n--;
 6             sb.append((char)('A' + n % 26));
 7             n /= 26;
 8         }
 9         return sb.reverse().toString();
10     }
11 }

 

171. Excel Sheet Column Number

Given a string columnTitle that represents the column title as appear in an Excel sheet, return its corresponding column number.

For example:

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

Example 1:

Input: columnTitle = "A"
Output: 1

Example 2:

Input: columnTitle = "AB"
Output: 28

Example 3:

Input: columnTitle = "ZY"
Output: 701

Constraints:

  • 1 <= columnTitle.length <= 7
  • columnTitle consists only of uppercase English letters.
  • columnTitle is in the range ["A", "FXSHRXW"].

Excel表列序号。

给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/excel-sheet-column-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题意是给了一个excel表列的序号,请转换成阿拉伯数字。

因为字母是每26个循环一次,所以相当于26进制,每26个数则向前进一位。同时注意因为A代表1,所以每个字母跟A做减法的时候还需额外 + 1。

时间O(n)

空间O(1)

Java实现

1 class Solution {
2     public int titleToNumber(String s) {
3         int res = 0;
4         for (int i = 0; i < s.length(); i++) {
5             res = res * 26 + (s.charAt(i) - 'A' + 1);
6         }
7         return res;
8     }
9 }

 

LeetCode 题目总结

posted @ 2020-08-11 00:22  CNoodle  阅读(165)  评论(0编辑  收藏  举报