-
Notifications
You must be signed in to change notification settings - Fork 0
/
ReversingLettersAndWords.java
36 lines (28 loc) · 1.02 KB
/
ReversingLettersAndWords.java
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
package devjava;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class ReversingLettersAndWords {
private static final String WHITESPACE = " ";
private static final Pattern PATTERN = Pattern.compile(" +");
public static String reverseWords(String str) {
String[] words = str.split(WHITESPACE);
StringBuilder reversedString = new StringBuilder();
for (String word : words) {
StringBuilder reverseWord = new StringBuilder();
for (int i = word.length() - 1; i >= 0; i--) {
reverseWord.append(word.charAt(i));
}
reversedString.append(reverseWord).append(WHITESPACE);
}
return reversedString.toString();
}
public static String reverseWordsFunctionalStyle(String str) {
return PATTERN.splitAsStream(str).map(w -> new StringBuilder(w).reverse()).collect(Collectors.joining(" "));
}
public static String reverse(String str) {
return new StringBuilder(str).reverse().toString();
}
public static void main(String[] args) {
System.out.println(reverse("Hasan is here!"));
}
}