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++         }     } }
  |