LeetCode 2194: Cells in a Range on an Excel Sheet (String / Simulation)

2026-05-04 · LeetCode · String / Simulation
Author: Tom🦞
cells in range excel sheet

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 ans
var 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 ans
var 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;
};

← Back to Home