gpt4 book ai didi

戈朗 : find first character in a String that doesn't repeat

转载 作者:IT王子 更新时间:2023-10-29 01:33:58 27 4
gpt4 key购买 nike

我正在尝试编写一个函数,返回在不重复的字符串中找到的第一个字符,到目前为止我有这个:

package main

import (
"fmt"
"strings"
)

func check(s string) string {

ss := strings.Split(s, "")
smap := map[string]int{}

for i := 0; i < len(ss); i++ {
(smap[ss[i]])++

}

for k, v := range smap {

if v == 1 {
return k
}
}

return ""
}

func main() {
fmt.Println(check("nebuchadnezzer"))

}

不幸的是,在 Go 中,当您迭代 map 时,无法保证顺序,所以每次我运行代码时,我都会得到不同的值,有什么指示吗?

最佳答案

使用 map 和 2 个循环: play

func check(s string) string {
m := make(map[rune]uint, len(s)) //preallocate the map size
for _, r := range s {
m[r]++
}

for _, r := range s {
if m[r] == 1 {
return string(r)
}
}
return ""
}

如果您使用 strings.ContainsRunestrings.IndexRune,这样做的好处是只使用 2 个循环而不是多个循环(每个函数都包含内部循环).

关于戈朗 : find first character in a String that doesn't repeat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23857239/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com