文章目录
- 替换数字 54卡码网
- 直接操作读取的[]byte
替换数字 54卡码网
本题为卡码网的54题,起为acm模式的答题
这里我们不在输入获得的[]byte类型上直接修改,而是保存在新建的[]byte上
golang小知识:
单引号’',表示byte类型或rune类型,对应int8和int32类型,默认是rune类型
package mainimport "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 []bytefor _, 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)
}
但在实际使用的过程中,第二部分所需的运行存储反而更多