文章目录
- 2194. Excel 表中某个范围内的单元格:
- 样例 1:
- 样例 2:
- 提示:
- 分析
- 题解
- java
- c
- c++
- python
- go
- rust
- Javascript
- typescript
- 原题传送门:https://leetcode-cn.com/problems/cells-in-a-range-on-an-excel-sheet/
2194. Excel 表中某个范围内的单元格:
Excel 表中的一个单元格 (r, c)
会以字符串 ""
的形式进行表示,其中:
给你一个格式为 ":"
的字符串 s
,其中
表示 c1
列,
表示 r1
行,
表示 c2
列,
表示 r2
行&#xff0c;并满足 r1 <&#61; r2
且 c1 <&#61; c2
。
找出所有满足 r1 <&#61; x <&#61; r2
且 c1 <&#61; y <&#61; c2
的单元格&#xff0c;并以列表形式返回。单元格应该按前面描述的格式用 字符串 表示&#xff0c;并以 非递减 顺序排列&#xff08;先按列排&#xff0c;再按行排&#xff09;。
样例 1&#xff1a;
输入&#xff1a;s &#61; "K1:L2"输出&#xff1a;["K1","K2","L1","L2"]解释&#xff1a;上图显示了列表中应该出现的单元格。红色箭头指示单元格的出现顺序。
样例 2&#xff1a;
输入&#xff1a;s &#61; "A1:F1"输出&#xff1a;["A1","B1","C1","D1","E1","F1"]解释&#xff1a;上图显示了列表中应该出现的单元格。 红色箭头指示单元格的出现顺序。
提示&#xff1a;
- s.length &#61;&#61; 5
- ‘A’ <&#61; s[0] <&#61; s[3] <&#61; ‘Z’
- ‘1’ <&#61; s[1] <&#61; s[4] <&#61; ‘9’
- s 由大写英文字母、数字、和 ‘:’ 组成
分析
- 面对这道算法题目&#xff0c;二当家的陷入了沉思。
- 第一步要能从参数字符串中截取出起始行列和终止行列的值。
- 第二步遍历生成结果&#xff0c;由于要求结果有序&#xff0c;所以我们如果可以在生成时就满足要求&#xff0c;就可以不用后面再来一次排序了。
题解
java
class Solution {public List<String> cellsInRange(String s) {List<String> ans &#61; new ArrayList<>();char[] cs &#61; new char[2];for (cs[0] &#61; s.charAt(0); cs[0] <&#61; s.charAt(3); cs[0]&#43;&#43;) {for (cs[1] &#61; s.charAt(1); cs[1] <&#61; s.charAt(4); cs[1]&#43;&#43;) {ans.add(String.valueOf(cs));}}return ans;}
}
c
char ** cellsInRange(char * s, int* returnSize){*returnSize &#61; (s[3] - s[0] &#43; 1) * (s[4] - s[1] &#43; 1);char **ans &#61; (char **) malloc(*returnSize * sizeof(char *));for (char c &#61; s[0]; c <&#61; s[3]; &#43;&#43;c) {for (char r &#61; s[1]; r <&#61; s[4]; &#43;&#43;r) {int index &#61; (c - s[0]) * (s[4] - s[1] &#43; 1) &#43; (r - s[1]);ans[index] &#61; (char *) malloc(3 * sizeof(char));ans[index][0] &#61; c;ans[index][1] &#61; r;ans[index][2] &#61; &#39;\0&#39;;}}return ans;
}
c&#43;&#43;
class Solution {
public:vector<string> cellsInRange(string s) {vector<string> ans;for (char c &#61; s[0]; c <&#61; s[3]; &#43;&#43;c) {for (char r &#61; s[1]; r <&#61; s[4]; &#43;&#43;r) {ans.push_back({c, r});}}return ans;}
};
python
class Solution:def cellsInRange(self, s: str) -> List[str]:return [chr(c) &#43; chr(r) for c in range(ord(s[0]), ord(s[3]) &#43; 1) for r in range(ord(s[1]), ord(s[4]) &#43; 1)]
go
func cellsInRange(s string) []string {var ans []stringfor c :&#61; s[0]; c <&#61; s[3]; c&#43;&#43; {for r :&#61; s[1]; r <&#61; s[4]; r&#43;&#43; {ans &#61; append(ans, string(c)&#43;string(r))}}return ans
}
rust
impl Solution {pub fn cells_in_range(s: String) -> Vec<String> {let mut ans &#61; Vec::new();(s.as_bytes()[0]..(s.as_bytes()[3] &#43; 1)).for_each(|c| {(s.as_bytes()[1]..(s.as_bytes()[4] &#43; 1)).for_each(|r| {ans.push(String::from_utf8(vec![c, r]).unwrap());});});ans}
}
Javascript
var cellsInRange &#61; function(s) {let ans &#61; [];for (let c &#61; s[0].charCodeAt(); c <&#61; s[3].charCodeAt(); c&#43;&#43;) {for (let r &#61; s[1]; r <&#61; s[4]; r&#43;&#43;) {ans.push(String.fromCharCode(c) &#43; r);}}return ans;
};
typescript
function cellsInRange(s: string): string[] {let ans &#61; [];for (let c &#61; s[0].charCodeAt(0); c <&#61; s[3].charCodeAt(0); c&#43;&#43;) {for (let r &#61; Number.parseInt(s[1]); r <&#61; Number.parseInt(s[4]); r&#43;&#43;) {ans.push(String.fromCharCode(c) &#43; r);}}return ans;
};
原题传送门&#xff1a;https://leetcode-cn.com/problems/cells-in-a-range-on-an-excel-sheet/
非常感谢你阅读本文~
欢迎【&#x1f44d;点赞】【⭐收藏】【&#x1f4dd;评论】~
放弃不难&#xff0c;但坚持一定很酷~
希望我们大家都能每天进步一点点~
本文由 二当家的白帽子&#xff1a;https://le-yi.blog.csdn.net/ 博客原创~