Go语言基础练习一

2021-11-30  本文已影响0人  羋学僧

一、字符统计

1、判读字符串汉字的数量

package main

import (
    "fmt"
    "unicode"
)

func main() {
    //判断字符串中汉字的数量
    //难点是判读一个字符是汉字
    s1 := "hello上海"
    // 1.依次拿到字符串中的字符
    var count int
    for _, c := range s1 {
        //2.判断当前这个字符是不是汉字
        if unicode.Is(unicode.Han, c){
            count++
        }
    }
    //3.把汉字出现的次数累加得到最终结果
    fmt.Println(count)

}

2、how do you do 单词出现的次数

package main

import (
    "fmt"
    "strings"
)

func main() {
    // how do you do 单词出现的次数
    s2 := "how do you do"
    //1.把字符串按照空格切割得到切片
    s3 := strings.Split(s2," ")
    //2.遍历切片存储到一个map
    m1 := make(map[string]int,10)
    for _, w := range s3 {
        //2.1如果原来map中不存在w这个key,那么出现次数=1
        if _,ok := m1[w] ; !ok {
            m1[w] = 1   
        } else {
            m1[w]++
        }
        //2.2如果map中存在w这个key,那么出现次数+1
    }
    //3.累加出现次数
    for key,value := range m1 {
        fmt.Println(key,value)
    }
}

二、回文判断

字符串从左往右和从右向左读是一样的,那么就是回文
上海自来水来自海上

package main

import (
    "fmt"
)

func main() {
    ss := "山西运煤车煤运西山"
    // 解题思路:
    // 把字符串中的字符拿出来放到一个[]rune中
    r := make([]rune ,0,len(ss))
    for _, c := range ss {
        r = append(r, c)
    }
    fmt.Println("[]rune:",r)
    for i := 0; i < len(r)/2; i++ {
        // c r[i] r[len(r)-1-i]
        if r[i] != r[len(r)-1-i]{
            fmt.Println("不是回文")
            return
        }
    }
    fmt.Println("是回文")
}
上一篇 下一篇

猜你喜欢

热点阅读