LeetCode-in-Java

917. Reverse Only Letters

Easy

Given a string s, reverse the string according to the following rules:

Return s after reversing it.

Example 1:

Input: s = “ab-cd”

Output: “dc-ba”

Example 2:

Input: s = “a-bC-dEf-ghIj”

Output: “j-Ih-gfE-dCba”

Example 3:

Input: s = “Test1ng-Leet=code-Q!”

Output: “Qedo1ct-eeLg=ntse-T!”

Constraints:

Solution

public class Solution {
    public String reverseOnlyLetters(String s) {
        char[] array = s.toCharArray();
        int i = 0;
        int j = array.length - 1;
        while (i < j) {
            if (Character.isLetter(array[i]) && Character.isLetter(array[j])) {
                char temp = array[i];
                array[i++] = array[j];
                array[j--] = temp;
            } else if (Character.isLetter(array[i])) {
                j--;
            } else if (Character.isLetter(array[j])) {
                i++;
            } else {
                i++;
                j--;
            }
        }
        return new String(array);
    }
}