### Reverse Words in a String III Java Solution - The Coding Shala

Home >> Interview Questions >> Reverse Words in a String 3

## Reverse Words in a String III

Problem:

Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order.

Example 1:

Input: "Let's take LeetCode contest"

Output: "s'teL ekat edoCteeL tsetnoc"

Note: In the string, each word is separated by a single space and there will not be any extra space in the string.

### Reverse Words in a String III Java Solution

Approach 1:
Using StringBuilder and reverse we can do it.

Java

```class Solution {
public String reverseWords(String s) {
s = s.trim();
int len = s.length()-1;
StringBuilder ans = new StringBuilder();
StringBuilder tmp = new StringBuilder();
int i = 0;
while(i<=len){
if(s.charAt(i)==' '){
tmp.reverse();
ans.append(tmp).append(" ");
tmp=new StringBuilder();
while(i<=len && s.charAt(i)==' ') i++;
}else{
tmp.append(s.charAt(i));
i++;
}
}
tmp.reverse();
ans.append(tmp);
return ans.toString();
}
}
```

Approach 2:
We can convert String into a char array and then reverse the char till space.

Java

```class Solution {
public String reverseWords(String s) {
s = s.trim();
char[] ans = s.toCharArray();
int i = 0, j = s.length(),tmp=0;
while(i<j){
if(ans[i]==' '){
reverse(ans, tmp, i-1);
tmp = i+1;
}
i++;
}
reverse(ans, tmp, j-1);
return new String(ans);
}

public void reverse(char[] ans, int start, int end){
while(start<end){
char t = ans[start];
ans[start] = ans[end];
ans[end] = t;
start++;
end--;
}
}
}
```

Other Posts You May Like