[LeetCode] Reverse Only Letters

아르당·7일 전

LeetCode

목록 보기
198/213
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

문자열 s가 주어졌을 때, 다음 규칙에 따라 문자열을 뒤집어라.

  • 영어 알파벳이 아닌 모든 문자는 원래 위치에 그대로 있다.
  • 모든 영어 알파벳(소문자 또는 대문자)은 뒤집혀 있어야 한다.

뒤집힌 후 s를 반환해라.

Example

#1
Input: s = "ab-cd"
Output: "dc-ba"

#2
Input: s = "a-bC-dEf-ghIj"
Output: "j-Ih-gfE-dCba"

#3
Input: s = "Test1ng-Leet=code-Q!"
Output: "Qedo1ct-eeLg=ntse-T!"

Constraints

  • 1 <= s.length <= 100
  • s는 ASCII 값이 [33, 122] 범위에 있는 문자로 구성된다.
  • s는 '\"' 또는 '\'를 포함하지 않는다.

Solved

class Solution {
    public String reverseOnlyLetters(String s) {
        char[] arr = s.toCharArray();
        int start = 0;
        int end = arr.length - 1;

        while(start < end){
            if(Character.isLetter(arr[start]) && Character.isLetter(arr[end])){
                char temp = arr[start];
                arr[start] = arr[end];
                arr[end] = temp;
                
                start++;
                end--;
            }else if(!Character.isLetter(arr[start])){
                start++;
            }else{
                end--;
            }
        }

        return new String(arr);
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글