剑指 Offer 05. 替换空格
func replaceSpace(s string) string {
sb := []byte(s)
sbLen := len(sb)
spaceCount := 0
for _,v := range sb {
if v == ' ' {
spaceCount++
}
}
addSlice := make([]byte,spaceCount*2)
sb = append(sb, addSlice...)
sbLenAfer := len(sb)
i, j := sbLen-1, sbLenAfer-1
for i >= 0 {
if sb[i] != ' ' {
sb[j] = sb[i]
i--
j--
} else if sb[i] == ' ' {
sb[j] = '0'
j--
sb[j] = '2'
j--
sb[j] = '%'
j--
i--
}
}
return string(sb)
}
剑指 Offer 58 - II. 左旋转字符串
func reverseLeftWords(s string, n int) string {
ss := []byte(s)
reverse(ss)
reverse(ss[len(ss)-n:])
reverse(ss[:len(ss)-n])
return string(ss)
}
func reverse(s []byte) {
for i:=0;i<len(s)/2;i++{
s[i],s[len(s)-1-i]=s[len(s)-1-i],s[i]
}
}