看了下没有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]))
}
}

京公网安备 11010502036488号