刷题-字符串大小写以及数字转换
题目描述
现在有一种密码变换算法。
九键手机键盘上的数字与字母的对应: 1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,把密码中出现的小写字母都变成九键键盘对应的数字,如:a 变成 2,x 变成 9.
而密码中出现的大写字母则变成小写之后往后移一位,如:X ,先变成小写,再往后移一位,变成了 y ,例外:Z 往后移是 a 。
数字和其它的符号都不做变换。
数据范围:
输入的字符串长度满足 1 \le n \le 100 \1≤n≤100
输入描述:
输入一组密码,长度不超过100个字符。
输出描述:
输出密码变换后的字符串
示例1
输入:
YUANzhi1987
输出:
zvbo9441987
const rl = require("readline").createInterface({ input: process.stdin });
rl.on('line',function(data){
const result= []
const input = data.split('')
// 以索引代替对应的数字
let myKey = ['0','1','abc','def','ghi','jkl','mno','pqrs','tuv','wxyz']
input.forEach((item,index)=>{
let charCode = item.charCodeAt()
// 如果是小写则判断是数组中哪个
// console.log(item+'---'+charCode)
if(charCode>=97) {
for(let i =0;i<myKey.length;i++) {
if(myKey[i].includes(item)){
result.push(i)
break;
}
}
}
// 如果是数字的ascii码则不做转换
else if(charCode>=48 && charCode<=57){
result.push(item)
}
// 字母'A'对应65,'a'对应97 中间差距为32,加1则是33
else{
if(item==='Z'){
result.push('a')
}
else{
result.push(String.fromCharCode(charCode+33))
}
}
})
console.log(result.join(''))
})
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?