gpt4 book ai didi

string - 语言。我想检查字符串的内容是否符合条件。如何在速度方面有效地在 Go 语言中做到这一点?

转载 作者:IT王子 更新时间:2023-10-29 02:29:14 25 4
gpt4 key购买 nike

字符串将只包含 0 或 4。该字符串将以 4 开头。例如:444、44、40、4400、4440 等。这些都是有效的字符串,但 404 无效。目前,我正在检查 4 是否紧跟在 0 之后。我不确定这个是否有效。

最佳答案

如果你的意思是领先 4 和跟随 0

使用正则表达式

package main

import (
"regexp"
)

func check(s string) bool {
return regexp.MustCompile(`^4+0*$`).MatchString(s)
}

func main() {
for _, tt := range []string{"444", "44", "40", "4400", "4440"} {
if !check(tt) {
panic("want true: " + tt)
}
}
for _, tt := range []string{"404", "040"} {
if check(tt) {
panic("want false: " + tt)
}
}
}

非正则表达式

package main

func check(s string) bool {
i := 0
r := []rune(s)
for i = 0; i < len(r); i++ {
if r[i] != '4' {
break
}
}
if i == 0 {
return false
}
for ; i < len(r); i++ {
if r[i] != '0' {
return false
}
}
return true
}

func main() {
for _, tt := range []string{"444", "44", "40", "4400", "4440"} {
if !check(tt) {
panic("want true: " + tt)
}
}
for _, tt := range []string{"404", "040"} {
if check(tt) {
panic("want false: " + tt)
}
}
}

更快的版本

func check(s string) bool {
i, l := 0, len(s)
for ; i < l; i++ {
if s[i] != '4' {
break
}
}
if i == 0 {
return false
}
for ; i < l; i++ {
if s[i] != '0' {
return false
}
}
return true
}

关于string - 语言。我想检查字符串的内容是否符合条件。如何在速度方面有效地在 Go 语言中做到这一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44820370/

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