列表

详情


3324. 出现在屏幕上的字符串序列

给你一个字符串 target

Alice 将会使用一种特殊的键盘在她的电脑上输入 target,这个键盘 只有两个 按键:

注意,最初屏幕上是一个字符串 "",所以她 只能 按按键 1。

请你考虑按键次数 最少 的情况,按字符串出现顺序,返回 Alice 输入 target 时屏幕上出现的所有字符串列表。

 

示例 1:

输入: target = "abc"

输出: ["a","aa","ab","aba","abb","abc"]

解释:

Alice 按键的顺序如下:

示例 2:

输入: target = "he"

输出: ["a","b","c","d","e","f","g","h","ha","hb","hc","hd","he"]

 

提示:

相似题目

键盘行

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: vector<string> stringSequence(string target) { } };

cpp 解法, 执行用时: 29 ms, 内存消耗: 92.4 MB, 提交时间: 2024-10-23 09:29:58

class Solution {
public:
    vector<string> stringSequence(string target) {
        vector<string> ans;
        string s;
        for (int c : target) {
            s += 'a'; // 占位
            for (char j = 'a'; j <= c; j++) {
                s.back() = j;
                ans.push_back(s);
            }
        }
        return ans;
    }
};

java 解法, 执行用时: 6 ms, 内存消耗: 54.4 MB, 提交时间: 2024-10-23 09:29:44

class Solution {
    List<String> stringSequence(String target) {
        List<String> ans = new ArrayList<>();
        StringBuilder s = new StringBuilder();
        for (int c : target.toCharArray()) {
            s.append('a'); // 占位
            for (char j = 'a'; j <= c; j++) {
                s.setCharAt(s.length() - 1, j);
                ans.add(s.toString());
            }
        }
        return ans;
    }
}

golang 解法, 执行用时: 5 ms, 内存消耗: 14.9 MB, 提交时间: 2024-10-23 09:29:34

func stringSequence(target string) (ans []string) {
	s := make([]byte, len(target))
	for i, c := range target {
		for j := byte('a'); j <= byte(c); j++ {
			s[i] = j
			ans = append(ans, string(s[:i+1]))
		}
	}
	return
}

python3 解法, 执行用时: 59 ms, 内存消耗: 25.4 MB, 提交时间: 2024-10-23 09:29:15

class Solution:
    def stringSequence(self, target: str) -> List[str]:
        ans = []
        s = []
        for c in target:
            s.append('')  # 占位
            for s[-1] in ascii_lowercase[:ord(c) - ord('a') + 1]:
                ans.append(''.join(s))
        return ans

python3 解法, 执行用时: 7 ms, 内存消耗: 25.5 MB, 提交时间: 2024-10-23 09:27:26

class Solution:
    def stringSequence(self, target: str) -> List[str]:
        ans = []
        c = ''
        for m in target:
            ans += [c+chr(m) for m in range(ord('a'), ord(m)+1)]
            c = ans[-1]
        return ans

上一题