题解 | #字符串加密#

字符串加密

https://www.nowcoder.com/practice/e4af1fe682b54459b2a211df91a91cf3

package main

import (
    "fmt"
    "os"
    "bufio"
)

func encrypt(key string, word string) string {
    letterTable := "abcdefghijklmnopqrstuvwxyz"

    m := make(map[byte]struct{})
    var keyPrefix []byte
    for i:=0; i<len(key); i++ {
        if _, ok := m[key[i]]; !ok {
            keyPrefix = append(keyPrefix, key[i])
            m[key[i]] = struct{}{}
        }
    }

    for i:=0; i<len(letterTable); i++ {
        if _, ok := m[letterTable[i]]; !ok {
            keyPrefix = append(keyPrefix, letterTable[i])
            m[letterTable[i]] = struct{}{}
        }
    }

    sb := []byte(word)
    for i:=0; i<len(sb); i++ {
        if 'a' <= sb[i] && sb[i] <= 'z' {
            sb[i] = keyPrefix[sb[i]-'a']
        }
    }

    return string(sb)
}

func main() {
    var key string
    var word string

    inputReader := bufio.NewReader(os.Stdin)
    line, _, _ := inputReader.ReadLine()
    key = string(line)

    line, _, _ = inputReader.ReadLine()
    word = string(line)

    fmt.Println(encrypt(key, word))
}
// 输入为两行字符串,可能包含空格,所以采用:inputReader.ReadLine()

全部评论

相关推荐

07-03 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
小叮当411:应该是1-3个月吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务