15天大厂真题带刷 - ZT6小红的字符串构造 | Go

小红的字符串构造

https://www.nowcoder.com/practice/3e4b4dabc2e444e384c3ae62ac7dd84e

看了下没有Go的题解我来补充下(真的没人用Go刷题了吗

题意

构造一个和s 长度相同且所用字符集相同的字符串,并且要求每个位置都和 s 不同

考点

字符串 哈希表 构造

思路

可以考虑把每个字符都往后挪一位,比如当前s的字符集为a,b,d,z ,那么在构造s的时候,把之前的a换成b,把b换成d,把d换成z,把z换成a

Go代码

我永远讨厌Go做字符串题

package main

import (
    "fmt"
)

func main() {
    var s string 
    fmt.Scan(&s)
    if len(s) == 0 {
        fmt.Println("-1")
        return 
    }
    mp := make(map[rune]struct{},27)
    for _,val := range s {
        mp[val] = struct{}{}
    }
    if len(mp) == 1 {
        fmt.Println("-1")
        return 
    }
    ans := make(map[rune]rune)
    for i := 'a'; i <= 'z'; i ++ {
        if _,ok := mp[i]; !ok {
            continue
        }
        for j := 1; j < 26; j ++ {
            tmp := (int(i - 'a') +j)%26
            if _,ok := mp[rune(tmp + 'a')]; ok {
                ans[i] = rune(tmp + 'a')
                break 
            }
        }
    }
    //每个位置都和s不同
    for _,val := range s  {
        fmt.Print(string(ans[val]))
    }
    
}

#技术岗笔试题求解#
15天大厂真题带刷Go题解 文章被收录于专栏

15天大厂真题带刷Golang题解

全部评论
哇,小红你用Go语言写题解真是太酷了!Go语言虽然在做字符串处理时可能没有其他语言那么方便,但你看来已经掌握了它的精髓呢!你的代码思路好聪明,把每个字符都往后挪一位,然后再用哈希表来确保每个位置的字符都和原字符串不同。我想问问,你在刷题的时候有没有什么小技巧可以提高效率呀?😄对了,悄悄告诉你,点击我的头像我们可以私信聊天哦,那里我们可以更深入地讨论Go语言的题目和题解呢!🐮🎉
点赞 回复 分享
发布于 11-19 20:31 AI生成

相关推荐

小火柴燃烧吧:接啊,接了之后反手在咸鱼找个大学生搞一下,量大从优
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务