LeetCode 2194: Cells in a Range on an Excel Sheet (String / Simulation)
English
The range format is like "K1:L2". Parse start and end column letters and row digits, then iterate columns from left to right, and for each column iterate rows from top to bottom. Append column + row to result.
class Solution {
public java.util.List<String> cellsInRange(String s) {
char c1 = s.charAt(0), c2 = s.charAt(3);
int r1 = s.charAt(1) - '0', r2 = s.charAt(4) - '0';
java.util.List<String> ans = new java.util.ArrayList<>();
for (char c = c1; c <= c2; c++) {
for (int r = r1; r <= r2; r++) {
ans.add("" + c + r);
}
}
return ans;
}
}func cellsInRange(s string) []string {
c1, c2 := s[0], s[3]
r1, r2 := int(s[1]-'0'), int(s[4]-'0')
ans := []string{}
for c := c1; c <= c2; c++ {
for r := r1; r <= r2; r++ {
ans = append(ans, string(c)+fmt.Sprint(r))
}
}
return ans
}class Solution {
public:
vector<string> cellsInRange(string s) {
char c1 = s[0], c2 = s[3];
int r1 = s[1] - '0', r2 = s[4] - '0';
vector<string> ans;
for (char c = c1; c <= c2; ++c) {
for (int r = r1; r <= r2; ++r) {
ans.push_back(string(1, c) + to_string(r));
}
}
return ans;
}
};class Solution:
def cellsInRange(self, s: str) -> List[str]:
c1, c2 = s[0], s[3]
r1, r2 = int(s[1]), int(s[4])
ans = []
for c in range(ord(c1), ord(c2) + 1):
for r in range(r1, r2 + 1):
ans.append(chr(c) + str(r))
return ansvar cellsInRange = function(s) {
const c1 = s.charCodeAt(0), c2 = s.charCodeAt(3);
const r1 = Number(s[1]), r2 = Number(s[4]);
const ans = [];
for (let c = c1; c <= c2; c++) {
for (let r = r1; r <= r2; r++) {
ans.push(String.fromCharCode(c) + String(r));
}
}
return ans;
};中文
字符串区间形如 "K1:L2"。解析起止列字符和起止行数字后,按列从小到大遍历,每列内按行从小到大遍历,把 列字母 + 行号 依次加入答案即可。
class Solution {
public java.util.List<String> cellsInRange(String s) {
char c1 = s.charAt(0), c2 = s.charAt(3);
int r1 = s.charAt(1) - '0', r2 = s.charAt(4) - '0';
java.util.List<String> ans = new java.util.ArrayList<>();
for (char c = c1; c <= c2; c++) {
for (int r = r1; r <= r2; r++) {
ans.add("" + c + r);
}
}
return ans;
}
}func cellsInRange(s string) []string {
c1, c2 := s[0], s[3]
r1, r2 := int(s[1]-'0'), int(s[4]-'0')
ans := []string{}
for c := c1; c <= c2; c++ {
for r := r1; r <= r2; r++ {
ans = append(ans, string(c)+fmt.Sprint(r))
}
}
return ans
}class Solution {
public:
vector<string> cellsInRange(string s) {
char c1 = s[0], c2 = s[3];
int r1 = s[1] - '0', r2 = s[4] - '0';
vector<string> ans;
for (char c = c1; c <= c2; ++c) {
for (int r = r1; r <= r2; ++r) {
ans.push_back(string(1, c) + to_string(r));
}
}
return ans;
}
};class Solution:
def cellsInRange(self, s: str) -> List[str]:
c1, c2 = s[0], s[3]
r1, r2 = int(s[1]), int(s[4])
ans = []
for c in range(ord(c1), ord(c2) + 1):
for r in range(r1, r2 + 1):
ans.append(chr(c) + str(r))
return ansvar cellsInRange = function(s) {
const c1 = s.charCodeAt(0), c2 = s.charCodeAt(3);
const r1 = Number(s[1]), r2 = Number(s[4]);
const ans = [];
for (let c = c1; c <= c2; c++) {
for (let r = r1; r <= r2; r++) {
ans.push(String.fromCharCode(c) + String(r));
}
}
return ans;
};