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题解