186. 反转字符串中的单词 II - Kotlin 两次翻转
Problem: 186. 反转字符串中的单词 II
思路
以样例为例:the sky is blue
将样例整体翻转一遍,得到:eulb si yks eht
此时可以发现单词的顺序已经满足翻转的条件,只不过每个单词内部的字母额外翻转了一次
此时以空格为分界,对每个字母单独再翻转一次即可得到结果:blue is sky the
复杂度
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| class Solution { fun reverseWords(s: CharArray): Unit { var begin=0 var end=0 var left=0 var right=0
left=0 right=s.size-1 while (left<right){ val tmp=s[left] s[left]=s[right] s[right]=tmp
left++ right-- }
while (end<s.size){ if(end==s.size-1||s[end+1]==' '){ left=begin right=end while (left<right){ val tmp=s[left] s[left]=s[right] s[right]=tmp
left++ right-- } begin=end+2 } end++ } } }
|