算法题-密码变换算法

1. 题目描述

现在有一种密码变换算法。
九键手机键盘上的数字与字母的对应: 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≤n≤100

  • 输入描述: 输入一组密码,长度不超过100个字符。

  • 输出描述: 输出密码变换后的字符串

2. 解答题目

package main

import (
    "fmt"
    "strings"
)

func main() {
     m := map[string]byte{
        "abc":  50,
        "def":  51,
        "ghi":  52,
        "jkl":  53,
        "mno":  54,
        "pqrs": 55,
        "tuv":  56,
        "wxyz": 57,
    }
    var s string
    fmt.Scan(&s)
    bt := make([]byte, 0)
    for i := 0; i < len(s); i++ {
        switch {
        //处理大写字母
        case s[i] >= 'A' && s[i] <= 'Z':
            if s[i] != 'Z' {
                bt = append(bt, s[i]+33)
            } else {
                bt = append(bt, 'a')
            }
        //处理小写字母
        case s[i] >= 'a' && s[i] <= 'z':
            for k, v := range m {
                if strings.Contains(k, string(s[i])) {
                    bt = append(bt, v)
                }
            }
        //处理数字
        default:
            bt = append(bt, s[i])
        }
    }
    fmt.Println(string(bt))    
}
全部评论
我之前刷过这个题
1 回复 分享
发布于 2022-08-22 08:18 陕西

相关推荐

冲芭芭拉鸭:你这图还挺新,偷了。
投递美团等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务