1 回答

TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊
第一個(gè)解決方案
這就是你想要的:
func main() {
var limit int
var name string
_, err := fmt.Scanln(&limit)
if err != nil {
fmt.Println(err)
}
var names []string
var presence []string
for i := 0; i < limit; i++ {
_, err := fmt.Scanln(&name)
if err != nil {
fmt.Println(err)
}
var exist = false
for _, a := range names {
if a == name {
exist = true
break
}
}
if !exist {
names = append(names, name)
presence = append(presence, "NO")
} else {
presence = append(presence, "YES")
}
}
fmt.Println(presence)
}
首先Scanln返回 ,error您需要檢查它。
第二:追加到數(shù)組必須在內(nèi)循環(huán)之外。嘗試使用 debugPrintln()來調(diào)試您的算法。
將代碼移至單獨(dú)的函數(shù)
為了清楚起見,我建議將存在性檢查移至單獨(dú)的函數(shù):
func exists(a []string, element string) bool {
for _, e := range a {
if e == element {
return true
}
}
return false
}
func main() {
var limit int
var name string
_, err := fmt.Scanln(&limit)
if err != nil {
fmt.Println(err)
}
var names []string
var presence []string
for i := 0; i < limit; i++ {
_, err := fmt.Scanln(&name)
if err != nil {
fmt.Println(err)
}
if !exists(names, name) {
names = append(names, name)
presence = append(presence, "NO")
} else {
presence = append(presence, "YES")
}
}
fmt.Println(presence)
}
優(yōu)化
在前面的代碼中,我們?cè)诿看窝h(huán)中將字符串?dāng)?shù)組傳遞給函數(shù)。如果數(shù)組更大,那就不好了,最好將指向字符串?dāng)?shù)組的指針傳遞給函數(shù)(或指向字符串的指針數(shù)組)。
- 1 回答
- 0 關(guān)注
- 125 瀏覽
添加回答
舉報(bào)