Golang 替换数字卡码54题

文章目录

  • 替换数字 54卡码网
    • 直接操作读取的[]byte

替换数字 54卡码网

本题为卡码网的54题,起为acm模式的答题
这里我们不在输入获得的[]byte类型上直接修改,而是保存在新建的[]byte上

golang小知识:
单引号’',表示byte类型或rune类型,对应int8和int32类型,默认是rune类型

package main

import "fmt"

// acm模式
func main() {
	//以byte切片的方式获取输入
	var str []byte

	//获取输入
	_, err := fmt.Scanln(&str)
	if err != nil {
		return
	}

	//将要插入的number先存为[]byte,方便使用
	number := []byte{'n', 'u', 'm', 'b', 'e', 'r'}

	var record []byte

	for _, i2 := range str {

		//这里比较需要使用'',实际对应的数值是不一样的
		if i2 >= '0' && i2 <= '9' {
			record = append(record, number...)
		} else {
			record = append(record, i2)
		}

	}

	//将[]byte转换为string,方便后续输出
	s := string(record)

	fmt.Println(s)
}

直接操作读取的[]byte

go中string时无法直接修改的,但我们这里采取[]byte进行读取的话则可以针对进行修改

// 使用原[]byte
func main() {
	//以byte切片的方式获取输入
	var str []byte

	//获取输入
	_, err := fmt.Scanln(&str)
	if err != nil {
		return
	}

	//将要插入的number先存为[]byte,方便使用
	number := []byte{'n', 'u', 'm', 'b', 'e', 'r'}

	for i := 0; i < len(str); i++ {

		//这里比较需要使用'',实际对应的数值是不一样的
		if str[i] >= '0' && str[i] <= '9' {
			str = append(str[:i], append(number, str[i+1:]...)...)
			i += 6 - 1
		}

	}

	//将[]byte转换为string,方便后续输出
	c := string(str)

	fmt.Println(c)
}

但在实际使用的过程中,第二部分所需的运行存储反而更多

你可能感兴趣的:(golang,开发语言,后端)