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

简介: Excel 表中某个范围内的单元格

🎈 算法并不一定都是很难的题目,也有很多只是一些代码技巧,多进行一些算法题目的练习,可以帮助我们开阔解题思路,提升我们的逻辑思维能力,也可以将一些算法思维结合到业务代码的编写思考中。简而言之,平时进行的算法习题练习带给我们的好处一定是不少的,所以让我们一起来养成算法练习的习惯。今天练习的题目是一道比较简单的题目 ->Excel 表中某个范围内的单元格

问题描述

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 <= r2c1 <= c2

找出所有满足 r1 <= x <= r2c1 <= 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 由大写英文字母、数字、和 ':' 组成

思路分析

首先我们应该要先理解一下题目意思,题目会给我们一个字符串ss的格式为单元格1:单元格2,行用数字表示,列用大写字母表示:A代表第一列,B代表第二列…… 如B2:D4,表示从第二行第二列到第四行第四列之间的单元格,如下图:

其中包含的单元格分别为[B2,B3,B4,C2,C3,C4,D2,D3,D4].

所以我们只需要确认一下包含的行和列号,再遍历一下取出其中包含的单元格即可,我们可以先将列号转为数字:String.charCodeAt(),如'A'.charCodeAt() = 65,遍历过程中再将列号转换成字母即可:String.fromCharCode(number),如String.fromCharCode(65) = 'A'。而且题目中说到:

  • s.length == 5
  • 'A' <= s[0] <= s[3] <= 'Z'
  • '1' <= s[1] <= s[4] <= '9'

所以我们可以知道行数的范围为:s[1] - s[4],列数的范围为s[0] - s[3],进行两层遍历找出其中包含的单元格即可。

AC 代码

完整 AC 代码如下:

/**
 * @param {string} s
 * @return {string[]}
 */
var cellsInRange = function (s) {
  const maxNum = Number(s[4]),
    minNum = Number(s[1]);
  const maxLetter = s[3].charCodeAt(),
    minLetter = s[0].charCodeAt();
  const res = [];
  for (let i = minLetter; i <= maxLetter; i++) {
    for (let j = minNum; j <= maxNum; j++) {
      res.push(String.fromCharCode(i) + j);
    }
  }
  return res;
};

公众号

关注公众号『前端也能这么有趣』,获取更多有趣内容。

说在后面

🎉 这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,偶尔也会在自己的公众号『前端也能这么有趣』发一些比较有趣的文章,有兴趣的也可以关注下。在此谢谢大家的支持,我们下文再见 🙌。

目录
相关文章
excel中同一单元格内容分隔到不同的单元格
excel中同一单元格内容分隔到不同的单元格
excel中同一单元格内容分隔到不同的单元格
|
3月前
|
BI 索引 Python
python报表自动化系列 - 译码:与Excel单元格索引对应的十进制数坐标
python报表自动化系列 - 译码:与Excel单元格索引对应的十进制数坐标
17 1
|
9月前
EXCEL导入程序中(针对excel单元格合并等导致的一行多条数据重复解决办法)
EXCEL导入程序中(针对excel单元格合并等导致的一行多条数据重复解决办法)
101 0
|
3月前
|
BI 索引 Python
python报表自动化系列 - Excel单元格(Cell)索引范围对应的所有单元格
python报表自动化系列 - Excel单元格(Cell)索引范围对应的所有单元格
26 0
|
1月前
|
存储 SQL C#
C#实现Excel合并单元格数据导入数据集
C#实现Excel合并单元格数据导入数据集
excel中组合不同单元格的文字并实现单元格内换行
excel中组合不同单元格的文字并实现单元格内换行
|
4月前
|
存储 定位技术 数据处理
Python为Excel中每一个单元格计算其在多个文件中的平均值
Python为Excel中每一个单元格计算其在多个文件中的平均值
|
9月前
Excel实现单元格下拉框选择,加VBA脚本可实现选择多个选项,默认顿号分隔,可自定义符号分隔
来源需要用英文逗号分隔,这里输入限制为最大255字符,如果需要更多可选择单元格范围:
115 0
|
5月前
excel函数调用其他sheet单元格
excel函数调用其他sheet单元格
|
6月前
|
存储 数据处理 数据格式
Python计算大量Excel中某些指定单元格的跨文件平均值
本文介绍基于Python语言,对大量不同的Excel文件加以跨文件、逐单元格平均值计算的方法~
Python计算大量Excel中某些指定单元格的跨文件平均值