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

ops/2024/10/30 18:08:53/

给你一个字符串 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.ppmy.cn/ops/129653.html

相关文章

卷积神经网络实验三:模型优化(1)

作者有话说&#xff1a; 这篇文章写的还是比混乱的。因为本人也是第一次做这样的尝试&#xff0c;虽然接触深度学习有一年了&#xff0c;但是对于模型的优化仅仅是局限于理论上。通过这一次的实验&#xff0c;我对于模型的理解也更深了几分。我不期望这篇文章能帮你能解决多大问…

JVM垃圾回收算法

一、如何判断对象是否存活? 1、引用计数算法 在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1,引用失效时就减1,任何时刻计数器为0的对象就是不可能再被使用的。这个方法效率挺高,大部分情况下也是很不错的算法。 但是在JVM中会很难解决对象之间相互循…

PyCharm 2023 版本之后使用本地 conda 已存在环境的方法

文章目录 步骤 1: 选择先前配置的解释器步骤 2: 添加本地解释器步骤 3: 指定 Conda 可执行文件路径步骤 4: 加载本地 Conda 环境步骤 5: 选择环境并完成配置 步骤 1: 选择先前配置的解释器 当您打开新建项目的窗口时&#xff0c;请点击 “Previously configured interpreter”…

django中entity.save(using=)的使用

使用某些ORM&#xff08;对象关系映射&#xff09;框架时&#xff0c;比如Django ORM&#xff0c;entity.save(using...)是一种用于保存实体对象到数据库的方法调用&#xff0c;其中using参数用于指定要使用的数据库。 背景 在Django中&#xff0c;支持多数据库配置。这意味着你…

python中怎样实现闭包?

在Python中&#xff0c;闭包是指一个函数可以访问其自身范围之外的变量&#xff0c;即可以访问其外部函数作用域中的变量。要实现一个闭包&#xff0c;可以按照以下步骤进行&#xff1a; 内部函数引用外部函数的变量&#xff1a;在外部函数中定义一个内部函数&#xff0c;并在…

6.stm32 OLED显示屏

调试方式 串口调试&#xff1a;通过串口通信&#xff0c;将调试信息发送到电脑端&#xff0c;电脑使用串口助手显示调试信息 显示屏调试&#xff1a;直接将显示屏连接到单片机&#xff0c;将调试信息打印在显示屏上 Keil调试模式&#xff1a;借助Keil软件的调试模式&#…

AI驱动的低代码未来:加速应用开发的智能解决方案

引言 随着数字化转型的浪潮席卷全球&#xff0c;企业对快速构建应用程序的需求愈发强烈。然而&#xff0c;传统的软件开发周期冗长、成本高昂&#xff0c;往往无法满足快速变化的市场需求。在此背景下&#xff0c;低代码平台逐渐成为开发者和企业的优选方案&#xff0c;以其“低…

iQOO手机怎样将屏幕投射到MacBook?可以同步音频吗?

众所周知&#xff0c;苹果品牌的设备自己有AirPlay的投屏功能&#xff0c;iPhone要投屏到MacBook只要连接同一网络&#xff0c;然后开启AirPlay就可以投屏。但其他品牌的手机没有AirPlay&#xff0c;怎么将手机屏幕投射到MacBook呢&#xff1f; 安卓系统的手机可以使用无线投屏…