原文地址:记一道毫末智行的面试题~(字符串操作)
题目描述:有一字符串类型的数字,需清除掉字符串末尾的0和点这两种类型的元素,如"2.10"、"2.00"、"2.01",需替换为"2.1"、"2"、"2.01"这种格式。
拿到这个题目下意识就考虑将字符串转为切片,之后提前定义一个全局标识符,来标记符合规范的数据第一次出现的位置,最后倒序挨个验证是否为符合规范的数据,将符合规范的数据进行字符串倒序拼接,就可以完成上述题目了。
代码实现案例如下:
package main
import "fmt"
func main() {
str := []rune("2.010")
str1 := ""
sign := false
for i := len(str) - 1; i >= 0; i-- {
if string(str[i]) != "0" && string(str[i]) != "." {
sign = true
}
if (string(str[i]) == "0" || string(str[i]) == ".") && !sign {
} else {
str1 = string(str[i]) + str1
}
}
fmt.Println(str1)
}
func GetTopTwo(s1, s2 []int) {
if len(s1) == 0 {
return
}
sign := s1[0]
first := s2[0]
second := s2[1]
switch {
case sign > first && sign > second:
if first > second {
s2[1] = first
}
s2[0] = sign
case sign <= first && sign > second:
s2[1] = sign
case sign > first && sign <= second:
s2[0] = sign
default:
}
GetTopTwo(s1[1:], s2)
}
案例输出结果如下:
上述代码案例只是众多解决方案中较为常见的一种,还有其它方式来处理,此方案或许还有其它未知问题,因为没有进行详细测试,所以仅供参考哈。
至此,本次分享就结束了,后期会慢慢补充。
以上仅为个人观点,不一定准确,能帮到各位那是最好的。
好啦,到这里本文就结束了,喜欢的话就来个三连击吧。
扫码关注公众号,获取更多优质内容。