151. 翻转字符串里的单词
翻转字符串里的单词
题目描述:
给定一个字符串,逐个翻转字符串中的每个单词。
说明:
无空格字符构成一个 单词 。
输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
示例 1:
输入:”the sky is blue”
输出:”blue is sky the”
示例 2:
输入:” hello world! “
输出:”world! hello”
解释:输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
示例 3:
输入:”a good example”
输出:”example good a”
解释:如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
示例 4:
输入:s = “ Bob Loves Alice “
输出:”Alice Loves Bob”
示例 5:
输入:s = “Alice does not even like bob”
输出:”bob like even not does Alice”
思路:
还是自己太垃圾,字符串类型的题目不行了
要先把前面的空格和后面的空格去掉,这这之间把字符串之间的空格控制在1个,然后用spilt函数分割字符串,然后倒转,再用join合起来
代码:
func reverseWords(s string) string {
if s==""{
return ""
}
str := clearSpace(s)
var str1 string
ss :=strings.Split(string(str)," ")
for i:=0;i<len(ss)/2;i++{
ss[i],ss[len(ss)-1-i] = ss[len(ss)-1-i],ss[i]
}
if len(ss[0])==0{
ss = append(ss[:0],ss[1:]...)
}
str1 = strings.Join(ss," ")
return str1
}
func clearSpace(s string)string{
var str []byte
var i int
j :=len(s)-1
for i<len(s)&&s[i]==' '{
i++
}
flag :=1
for ;i<=j;i++{
if s[i]!=' '{
str = append(str,s[i])
flag=0
}
if s[i]==' '&&flag==0{
flag=1
str = append(str,s[i])
}
}
return string(str)
}
代码效率:
执行用时:0 ms, 在所有 Go 提交中击败了100.00%的用户
内存消耗:3.1 MB, 在所有 Go 提交中击败了63.42%的用户
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!