Reverse Only Letters - LeetCode
class Solution {
public String reverseOnlyLetters(String s) {
char[] arr = s.toCharArray();
int i = 0 , j = s.length()-1;
while (i < j)
{
char c1 = arr[i];
char c2 = arr[j];
if (Character.isLetter(c1) && Character.isLetter(c2)) {
arr[i++] = c2;
arr[j--] = c1;
}
if(!Character.isLetter(c2)){
j--;
}
if (!Character.isLetter(c1)){
i++;
}
}
return new String(arr);
}
}
class Solution {
public String reverseOnlyLetters(String s) {
StringBuilder str = new StringBuilder();
for (int i = s.length()-1 ; i >= 0 ; i--) {
char c1 = s.charAt(i);
if (Character.isLetter(c1)) str.append(c1);
}
for (int i = 0; i < s.length(); i++) {
char c1 = s.charAt(i);
if (!Character.isLetter(c1)) str.insert( i , c1);
}
return str.toString();
}
}