腾讯五十题 反转字符串中的单词III
题目链接
方法一:
class Solution {
public String reverseWords(String s) {
//先将字符串用空格划分成字符串数组
String[] strs = s.split(" ");
StringBuffer buffer = new StringBuffer();
//将每一个字符串反转后追加到buffer中并用空格隔开
for(int i=0;i<strs.length;i++){
buffer.append(new StringBuffer(strs[i]).reverse());
buffer.append(" ");
}
//最后会多一个空格,用trim()去掉
return buffer.toString().trim();
}
}

方法二:局部反转
class Solution {
public String reverseWords(String s) {
char[] arr = s.toCharArray();
int n = arr.length;
int left = 0,right = 0;
while(right <= n) {
if(right == n ||arr[right] == ' ') {
reverseString(arr, left, right -1);
left = right + 1;
}
right++;
}
return new String(arr);
}
public void reverseString(char[] s,int left, int right) {
while(left < right) {
s[left] ^= s[right];
s[right] ^= s[left];
s[left] ^= s[right];
left++;
right--;
}
}
}

本文来自博客园,作者:蹇爱黄,转载请注明原文链接:https://www.cnblogs.com/jianjiana/p/15876329.html

浙公网安备 33010602011771号