funcreverseStr(s string, k int)string{
ss :=[]byte(s)for i :=0; i <len(ss); i = i +2* k{if(i + k <=len(ss)){reverseS(ss[i:i + k])}else{reverseS(ss[i:len(ss)])}}returnstring(ss)}funcreverseS(s []byte){
i,j :=0,len(s)-1for j > i{
s[j],s[i]= s[i],s[j]
i++
j--}}
剑指Offer 05.替换空格
funcreplaceSpace(s string)string{
count :=0
len1 :=len(s)for i :=0; i < len1 ; i++{if(s[i]==' '){
count++}}
ss :=[]byte(s)
a :=make([]byte,count *2)
ss =append(ss,a...)
len2 :=len(ss)
i , j := len1 -1, len2 -1for i >=0{if(ss[i]==' '){
ss[j]='0'
ss[j-1]='2'
ss[j-2]='%'
j = j -3
i--}else{
ss[j]= ss[i]
i--
j--}}returnstring(ss)}
151.翻转字符串里的单词
funcreverseWords(s string)string{//先去除字符串最前面的空格
ss :=[]byte(s)
i :=0for ss[i]==' '{
i++}
ss = ss[i:]//去除中间的空格for j :=0; j <len(ss); j++{for ss[j]==' '&& ss[j -1]==' '&& j +1<len(ss){
ss =append(ss[0:j],ss[j+1:]...)}}//去除结尾的空格for ss[len(ss)-1]==' '{
ss = ss[:len(ss)-1]}reverse(ss)
tmp :=0for j :=0; j <len(ss); j++{if(ss[j]==' '){reverse(ss[tmp:j])
tmp = j +1}if(j ==len(ss)-1){reverse(ss[tmp:])}}returnstring(ss)}funcreverse(ss []byte){
i,j :=0,len(ss)-1for i < j {
ss[i],ss[j]= ss[j],ss[i]
i++
j--}}
剑指Offer58-II.左旋转字符串
funcreverseLeftWords(s string, n int)string{
ss :=[]byte(s)reverse(ss[:n])reverse(ss[n:])reverse(ss)returnstring(ss)}funcreverse(s []byte){
i,j :=0,len(s)-1for i < j{
s[i],s[j]= s[j],s[i]
i++
j--}}