《零基础Go语言算法实战》
【题目 1-15】字符串的比较
请用 Go 语言实现一个算法,在不使用额外存储结构的条件下判断一个字符串的所有字
符是否全都相同,字符串的长度不能超过 3000。
【解答】
① 思路。
本题需要实现一个算法来判断字符串中的所有字符是否全都相同且不允许使用额外的存
储结构。如果允许使用额外的存储结构,则本题很好解。如果不允许,则可以使用 Go 语言
内置的方式实现。
② Go 语言实现。
通过 strings.Count() 函数判断,代码如下:
package main
import (
"strings"
)
func isUniqueString1(s string) bool {
if strings.Count(s, "") > 3000 {
return false
}
for _, v := range s {
if v > 127 {
return false
}
if strings.Count(s, string(v)) > 1 {
return false
}
}
return true
}
通过 strings.Index() 函数和 strings.LastIndex() 函数判断索引是否存在,代码如下:
func isUniqueString2(s string) bool {
if strings.Count(s, "") > 3000 {
return false
}
for k, v := range s {
if v > 127 {
return false
}
if strings.Index(s, string(v)) != k {
return false
}
}
return true
}