excel-表中某个范围内的单元格
# Excel 表中某个范围内的单元格 (opens new window)
Category | Difficulty | Likes | Dislikes |
---|---|---|---|
algorithms | Easy (84.66%) | 15 | - |
Companies
Excel 表中的一个单元格 (r, c)
会以字符串 "<col><row>"
的形式进行表示,其中:
<col>
1即单元格的列号
c
1。用英文字母表中的
字母
标识。
- 例如,第
1
列用'A'
表示,第2
列用'B'
表示,第3
列用'C'
表示,以此类推。
- 例如,第
<row>
即单元格的行号r
。第r
行就用 整数r
标识。
给你一个格式为 "<col1><row1>:<col2><row2>"
的字符串 s
,其中 <col1>
表示 c1
列,<row1>
表示 r1
行,<col2>
表示 c2
列,<row2>
表示 r2
行,并满足 r1 <= r2
且 c1 <= c2
。
找出所有满足 r1 <= x <= r2
且 c1 <= y <= c2
的单元格,并以列表形式返回。单元格应该按前面描述的格式用 字符串 表示,并以 非递减 顺序排列(先按列排,再按行排)。
示例 1:
输入:s = "K1:L2"
输出:["K1","K2","L1","L2"]
解释:
上图显示了列表中应该出现的单元格。
红色箭头指示单元格的出现顺序。
1
2
3
4
5
2
3
4
5
示例 2:
输入:s = "A1:F1"
输出:["A1","B1","C1","D1","E1","F1"]
解释:
上图显示了列表中应该出现的单元格。
红色箭头指示单元格的出现顺序。
1
2
3
4
5
2
3
4
5
提示:
s.length == 5
'A' <= s[0] <= s[3] <= 'Z'
'1' <= s[1] <= s[4] <= '9'
s
由大写英文字母、数字、和':'
组成
Discussion (opens new window) | Solution (opens new window)
/*
* @Author: 仲灏<izhaong@outlook.com>🌶🌶🌶
* @Date: 2022-11-11 11:30:21
* @LastEditTime: 2022-11-11 13:58:41
* @LastEditors: 仲灏<izhaong@outlook.com>🌶🌶🌶
* @Description:
* @FilePath: /loan-home/Users/izhaong/izhaong/Project_me/leetcode/2194.excel-表中某个范围内的单元格.js
*/
/*
* @lc app=leetcode.cn id=2194 lang=javascript
*
* [2194] Excel 表中某个范围内的单元格
*
* https://leetcode.cn/problems/cells-in-a-range-on-an-excel-sheet/description/
*
* algorithms
* Easy (84.66%)
* Likes: 15
* Dislikes: 0
* Total Accepted: 12.3K
* Total Submissions: 14.5K
* Testcase Example: '"K1:L2"'
*
* Excel 表中的一个单元格 (r, c) 会以字符串 "<col><row>" 的形式进行表示,其中:
*
*
* <col> 即单元格的列号 c 。用英文字母表中的 字母 标识。
*
*
* 例如,第 1 列用 'A' 表示,第 2 列用 'B' 表示,第 3 列用 'C' 表示,以此类推。
*
*
* <row> 即单元格的行号 r 。第 r 行就用 整数 r 标识。
*
*
* 给你一个格式为 "<col1><row1>:<col2><row2>" 的字符串 s ,其中 <col1> 表示 c1 列,<row1> 表示 r1
* 行,<col2> 表示 c2 列,<row2> 表示 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 由大写英文字母、数字、和 ':' 组成
*
*
*/
// @lc code=start
/**
* @param {string} s
* @return {string[]}
*/
// var cellsInRange = function (s) {
// const [start, end] = s.split(":");
// const [sa, sw, sd] = /(^[A-Z])(\d+)/.exec(start);
// const [ea, ew, ed] = /(^[A-Z])(\d+)/.exec(end);
// let resArr = [];
// for (let i = sw.charCodeAt(); i <= ew.charCodeAt(); i++) {
// for (let j = 1; j <= ed - sd + 1; j++) {
// resArr.push(String.fromCharCode(i) + j);
// }
// }
// return resArr.length;
// };
var cellsInRange = function (s) {
const colonIndex = s.indexOf(":");
const sw = s.slice(0, colonIndex)[0];
const sd = Number(s.slice(1, colonIndex));
const ew = s.slice(colonIndex + 1)[0];
const ed = Number(s.slice(colonIndex + 2)[0]);
let resArr = [];
for (let i = sw.charCodeAt(); i <= ew.charCodeAt(); i++) {
for (let j = 1; j <= ed - sd + 1; j++) {
resArr.push(String.fromCharCode(i) + j);
}
}
return resArr;
};
// @lc code=end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
上次更新: 2022/12/09, 22:58:08