151. Reverse Words in a String
Java:
public class Solution {
public String reverseWords(String s) {
s = s.trim().replaceAll(" +", " ");
char[] sArray = s.toCharArray();
reverse(sArray, 0, sArray.length - 1);
int start = 0;
for (int i = 0; i < sArray.length; i++) {
if (sArray[i] == ' ') {
reverse(sArray, start, i - 1);
start = i + 1;
}
}
reverse(sArray, start, s.length() - 1);
return String.valueOf(sArray);
}
private void reverse(char[] sArray, int i, int j) {
while (i < j) {
char temp = sArray[i];
sArray[i] = sArray[j];
sArray[j] = temp;
i ++;
j --;
}
}
}
Python:
class Solution(object):
def reverseWords(self, s):
"""
:type s: str
:rtype: str
"""
s = s.strip()
s = ' '.join(s.split())
s_list = list(s)
self.reverse(s_list, 0, len(s) - 1)
start = 0
for idx in range(len(s_list)):
if s_list[idx] == ' ':
self.reverse(s_list, start, idx - 1)
start = idx + 1
self.reverse(s_list, start, len(s_list) - 1)
return ''.join(s_list)
def reverse(self, s_list, i, j):
while i < j:
s_list[i], s_list[j] = s_list[j], s_list[i]
i += 1
j -= 1