青训营豆包MarsCode 技术训练营第一课 | 豆包MarsCode AI 刷题

114 阅读2分钟

小T的密码变换规则

题目分析

题目要求将输入字符串转换为一串数字密码,转换规则具体如下: 解决思路 小写字母的映射: 小写字母按照一定规则转换为对应的数字,使用一个 switch 或 if 判断字母所属的范围。 大写字母的转换: 大写字母首先要转为小写字母,然后跳到字母表中的前一个字母,特殊处理字母 A。 非字母字符: 非字母字符(如数字、符号等)直接保留,不进行转换。

6a4b076f38b1d9d5271471db13ba74b.png 逻辑: 使用 StringBuilder 来构建结果字符串。StringBuilder 是一个可变的字符序列,比直接使用 String 更加高效。 遍历字符串 s 中的每个字符:如果字符是小写字母 ('a' 到 'z'),调用 getDigitFromLower() 方法获取对应的数字。 如果字符是大写字母 ('A' 到 'Z'),调用 getDigitFromUpper() 方法获取对应的数字。 如果字符既不是小写字母也不是大写字母(例如数字、符号等),直接将字符添加到结果中。 getDigitFromLower 方法

cca87509df16352eef8c4750495ef84.png 功能:根据电话键盘的规则将小写字母转换为数字。例如,a, b, c 都映射为 2;d, e, f 映射为 3,依此类推。 使用 switch 语句来匹配不同的字母,并返回对应的数字

ccfe124cc5e138ab8d1de0cd3b0829f.png 功能:将大写字母转换为相应的数字,遵循和小写字母相似的规则,但是需要额外考虑大写字母的特殊处理。对于字母 'A',特别处理为 '9',因为大写字母 'A' 对应的小写字母 'a' 前一个字母是 'z'(而 'z' 映射为 9)。 对于其他的大写字母,先将其转换为小写字母,然后再找出小写字母的前一个字母(如 'B' 对应 'A',前一个字母是 'z'),并按小写字母的规则转换。

c34f563beeee5663d18ee5148450662.png 功能:main 方法用于测试 solution 方法的正确性,使用三个示例字符串,并验证返回值是否正确。 每个示例字符串经过转换后,都会输出一个数字字符串。然后通过 equals() 方法与预期的结果进行比较,输出 true 表示正确。

关键点总结:

  1. 小写字母和大写字母会按照电话键盘的规则转换为数字。

  2. 大写字母的转换稍有不同,它首先会被转换成小写字母,然后按小写字母的前一个字母规则进行映射。

  3. 非字母字符(如数字和符号)会原样输出。