转载自Leet
Code
题目描述
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例: >输入:"Let's take LeetCode contest"
>输出:"s'teL ekat edoCteeL tsetnoc"
提示:
在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
我的代码
\(T(N) = O(N)\), \(S(N) = O(N)\)
{.line-numbers}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
| class MySolution557 { public String reverseWords(String s) { s = s.trim(); if (s==null||s.length()<=0) return ""; char []str = s.toCharArray(); int i=0, start = 0; for (; i<s.length(); i++) { if (s.charAt(i)==' ') { for (int ii=i-1; start<ii; start++,ii--) { char tmp = str[ii]; str[ii]=str[start]; str[start] = tmp; } start = i + 1; } } if (i==s.length()) { for (int ii=i-1; start<ii; start++,ii--) { char tmp = str[ii]; str[ii]=str[start]; str[start] = tmp; } } return new String(str); } }
|