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

力扣周赛Q1.出现在屏幕上字符串序列

给你一个字符串 target。

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

按键 1:在屏幕上的字符串后追加字符 'a'。
按键 2:将屏幕上字符串的 最后一个 字符更改为英文字母表中的 下一个 字符。例如,'c' 变为 'd','z' 变为 'a'。
注意,最初屏幕上是一个空字符串 "",所以她 只能 按按键 1。

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

示例 1:

输入: target = "abc"

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

解释:

Alice 按键的顺序如下:

按下按键 1,屏幕上的字符串变为 "a"。
按下按键 1,屏幕上的字符串变为 "aa"。
按下按键 2,屏幕上的字符串变为 "ab"。
按下按键 1,屏幕上的字符串变为 "aba"。
按下按键 2,屏幕上的字符串变为 "abb"。
按下按键 2,屏幕上的字符串变为 "abc"。
示例 2:

输入: target = "he"

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

class Solution:
    def stringSequence(self, target: str) -> List[str]:
        result = []
        current_string = ""
        # 按键1:添加字符 'a'
        for i in range(len(target)):
            while len(current_string)<i+1:
                current_string += 'a'
                result.append(current_string)
            # 按键2:更新当前字符串的最后一个字符
            while current_string[-1] != target[i]:
                current_string = current_string[:-1] +chr(ord(current_string[-1])+1)
                result.append(current_string)
        return result
  1. 字符与ASCII码值的对应关系:在计算机中,每个字符都有一个对应的ASCII码值。例如,'a'的ASCII码值是97,'b'的ASCII码值是98,以此类推。

  2. 递增字符:当我们需要将一个字符递增时,实际上是将其对应的ASCII码值加1,然后再将这个新的ASCII码值转换回对应的字符。例如,如果当前字符是'a'(ASCII码值97),加1后变成98,对应的字符就是'b'

  3. 实现递增操作:在这段代码中,ord(current_string[-1])获取当前字符串current_string的最后一个字符的ASCII码值,然后加1,得到下一个字符的ASCII码值。chr()函数将这个新的ASCII码值转换回对应的字符。

  4. 替换最后一个字符current_string[:-1]获取current_string除了最后一个字符之外的所有字符。将这个子字符串与新字符拼接起来,就实现了将最后一个字符替换为下一个字符的操作。

 


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

相关文章:

  • 别名联想路径,前端项目输入@/自动出提示目录和文件
  • WPF+Mvvm案例实战(五)- 自定义雷达图实现
  • JavaEE初阶---多线程(三)---内存可见性/单例模式/wait,notify的使用解决线程饿死问题
  • python构建flask服务用于视频文件的处理后返回
  • 【遗传算法】基于遗传模拟退火算法的风电功率聚类分析
  • Ovis: 多模态大语言模型的结构化嵌入对齐
  • webpack5搭建react脚手架详细步骤
  • mysql简答
  • 【计网】网络层路由过程 ,理解IP分片与组装
  • 【自然语言处理】BERT模型
  • Jedis(二)SpringBoot集成Jedis
  • 富格林:曝光有利追损操作方式
  • 基于Springboot+Vue 云南旅游管理系统(源码+LW+部署讲解+数据库+ppt)
  • 【C++STL】list的模拟实现
  • git clone完整使用手册
  • Cesium中的坐标系
  • 基于Arduino的LED亮灭按键控制
  • MySQL优化手段有哪些
  • 算法训练(leetcode)二刷第七天 | 344. 反转字符串、541. 反转字符串 II、54. 替换数字(第八期模拟笔试)
  • 多款云存储平台存在安全漏洞,影响超2200万用户
  • python把一张小图粘贴到一张大图上
  • anaconda jupyter notebook themes install jupyter notebook样式更改,取消页面头部,全屏展示!
  • 鸿蒙网络编程系列36-固定包头可变包体解决TCP粘包问题
  • IBus 和 Fcitx 框架下的rime输入法引擎
  • windows文件拷贝给wsl2的Ubuntu
  • Halcon 3D分割,筛选,矫正