当前位置: 首页 > article >正文

力扣第 420 场周赛 3324. 出现在屏幕上的字符串序列

一、题目

在这里插入图片描述

二、思路

由于操作只有两种:

  • 按键1:追加 ‘a’
  • 按键2:依次递增变更字母,如当前字母为’b’,按一次按键2,将当前字母变更为 ‘c’。
    最初的字符串是空串,所以每次都从 ‘a’ 开始进行依次改变,直至和 target 的对应位变为相同的字符。也正因为是从 ‘a’ 开始变更的,所以从 ‘a’ 变为目标字符的过程就是按键次数最少的过程,不需要考虑题目中所说的 ‘z’ 变为 ‘a’。另外,将每次添加或是变更字母过程中产生的新的字符串都要添加到输出的列表中。

三、代码

解法1:

class Solution {
    public List<String> stringSequence(String target) {
        List<String> ans = new ArrayList<>();
        StringBuilder path = new StringBuilder();
        path.append('a');
        ans.add(path.toString());
        int n = target.length();
        for (int i = 0; i < n; i++) {
        	// 计算需要按按键2的次数 move
            int move = target.charAt(i) - path.charAt(i);
            // 将 path 的第 i 位依次更改为 target 的第 i 位
            for (int j = 0; j < move; j++) {
                char nxtChar = (char)(path.charAt(i) + 1);
                path.setCharAt(i, nxtChar);
                ans.add(path.toString());
            }
            // path 字符个数小于 target 字符个数就继续追加 'a'
            if (i < n - 1) {
                path.append('a');
                ans.add(path.toString());
            }
        }
        return ans;
    }
}

解法2:将 target 转换为 char Array

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

http://www.kler.cn/news/366642.html

相关文章:

  • qt QNetworkProxy详解
  • Mysql主主互备配置
  • kafka 如何减少数据丢失?
  • AIGC:开启智能创造的璀璨新篇章
  • 借助Agent让大模型应用思考、决策并执行任务
  • AIGC底层技术揭秘
  • Chromium127编译指南 Windows篇 - 使用 GN 工具生成构建文件(六)
  • 【二轮征稿启动】第三届环境工程与可持续能源国际会议持续收录优质稿件
  • 代码随想录day11 栈与队列
  • Android静态变量中的字段被置空了
  • 关键词搜索的“魔法咒语”:用API接口召唤商品数据
  • Ubuntu服务器搭建Tailscale Derp节点
  • 掌握ElasticSearch(四):数据类型、回复体
  • arm架构 ubuntu 部署docker
  • 校园表白墙源码修复版
  • 基于python智能推荐的丢失物品招领网站的制作,前端vue+django框架,协同过滤算法实现推荐功能
  • 【MySQL 保姆级教学】表的约束--详细(6)
  • #渗透测试#SRC漏洞挖掘# 信息收集-Shodan批量扫描
  • 新王Claude 3.5的6大应用场景
  • android 文字绘制
  • 常见的租用服务器类型和费用
  • Vue学习笔记(三、v-cloak、v-text、v-html指令)
  • 南京移动5G-A网络助力固城湖螃蟹高效运输
  • SIP 业务举例之 Call Forwarding - No Answer(无应答呼叫转移)
  • 一文了解:多智能体系统(MAS)的演变(算法篇)
  • zabbix 6.0 监控自定义服务