「每日LeetCode」2022年4月4日

本文最后更新于:2023年3月19日 晚上

  1. Excel 表中某个范围内的单元格

2194. Excel 表中某个范围内的单元格

Excel 表中的一个单元格 (r, c) 会以字符串 ““ 的形式进行表示,其中:

  • 即单元格的列号 c 。用英文字母表中的 **字母** 标识。 - 例如,第 1 列用 'A' 表示,第 2 列用 'B' 表示,第 3 列用 'C' 表示,以此类推。
  • 即单元格的行号 r 。第 r 行就用 整数 r 标识。

给你一个格式为 “:“ 的字符串 s ,其中 表示 c1 列, 表示 r1 行, 表示 c2 列, 表示 r2 行,并满足 r1 <= r2 且 c1 <= c2 。
找出所有满足 r1 <= x <= r2 且 c1 <= y <= c2 的单元格,并以列表形式返回。单元格应该按前面描述的格式用 字符串 表示,并以 非递减 顺序排列(先按列排,再按行排)。

示例 1:

输入:s = “K1:L2” 输出:[“K1”,”K2”,”L1”,”L2”] 解释: 上图显示了列表中应该出现的单元格。 红色箭头指示单元格的出现顺序。
示例 2:

输入:s = “A1:F1” 输出:[“A1”,”B1”,”C1”,”D1”,”E1”,”F1”] 解释: 上图显示了列表中应该出现的单元格。 红色箭头指示单元格的出现顺序。

提示:

  • s.length == 5
  • ‘A’ <= s[0] <= s[3] <= ‘Z’
  • ‘1’ <= s[1] <= s[4] <= ‘9’
  • s 由大写英文字母、数字、和 ‘:’ 组成

思路

按题意模拟即可

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
* @param {string} s
* @return {string[]}
*/
var cellsInRange = function (s) {
const [startChar, startRow, endChar, endRow] = s
.split(":")
.map((item) => item.split(""))
.flat();
const res = [];
for (
let char = startChar;
char <= endChar;
char = String.fromCharCode(char.charCodeAt() + 1)
) {
for (let row = startRow; row <= endRow; row++) {
res.push(char + row);
}
}
return res;
};