替换数字
题目:54. 替换数字(第八期模拟笔试) (kamacoder.com)
题目描述
给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。 例如,对于输入字符串 “a1b2c3”,函数应该将其转换为 “anumberbnumbercnumber”。
输入描述
输入一个字符串 s,s 仅包含小写字母和数字字符。
输出描述
打印一个新的字符串,其中每个数字字符都被替换为了number
输入示例
a1b2c3
输出示例
anumberbnumbercnumber
提示信息
数据范围:
1 <= s.length < 10000。
方法一:
先确定有几个数字,扩容,然后使用双指针挨个赋值。
package mainimport "fmt"func main() {var n stringfmt.Scan(&n)fmt.Println(replace123(n))
}func replace123(s string) string {count := 0for _, r := range s {if r >= 48 && r <= 57 {count++}}bytes := []byte(s)newBytes := make([]byte, len(bytes)+5*count)l, r := len(bytes)-1, len(newBytes)-1for r >= 0 && l >= 0 {if bytes[l] >= 48 && bytes[l] <= 57 {for _, i2 := range "rebmun" {newBytes[r] = byte(i2)r--}} else {newBytes[r] = bytes[l]r--}l--}return string(newBytes)
}