分享两道Go语言字符串切片的练习题,附参考答案

练习1

给定一个字符串列表,在原有slice基础上,返回不包含空字符串的slice。

如:{“aaa”, “bbb”, “ccc”, “”, “aa”, “”, “bb”, “”, “cc”}
返回:{“aaa”, “bbb”, “ccc”, “aa”, “bb”, “cc”}

参考答案

package main

import "fmt"

// 去除字符串切片中的空字符串
func strRemoveBlank(data []string) []string {
   var result []string
   for _, v := range data {
      if v != "" {
         result = append(result, v)
      }
   }
   return result
}

func main() {
   data := []string{"aaa", "bbb", "ccc", "", "aa", "", "bb", "", "cc"}
   fmt.Println(data)
   result := strRemoveBlank(data)
   fmt.Println(result)
   fmt.Println("==================")
   for k, v := range result {
      fmt.Println(k, v)
   }
}

输出结果

分享两道Go语言字符串切片的练习题,附参考答案

练习2

写一个函数,清除[]string中的重复字符串。

如:[“aa”,“bb”,“cc”,“aa”,“bb”,“cc”,“aa”,“bb”,“cc”]
结果:[“aa”,“bb”,“cc”]

参考答案

package main

import "fmt"

// 去除字符串切片中的重复字符串
func strRemoveRepeated(data []string) []string {
   var result []string
   for _, v := range data {
      if !strIsInSlice(v, result) {
         result = append(result, v)
      }
   }
   return result
}

// 判断字符串是否在字符串切片中
func strIsInSlice(str string, slice []string) bool {
   for _, v := range slice {
      if str == v {
         return true
      }
   }
   return false
}
func main() {
   data := []string{"aa", "bb", "cc", "aa", "bb", "cc", "aa", "bb", "cc"}
   fmt.Println(data)
   result := strRemoveRepeated(data)
   fmt.Println(result)
   fmt.Println("===============================")
   for k, v := range result {
      fmt.Println(k, v)
   }
}

输出结果

分享两道Go语言字符串切片的练习题,附参考答案

上一篇:js小结


下一篇:Verilog 练习 反相器