순간을 기록으로

[Java] 문자열 안의 특정 문자만 뒤집기 | 인프런 본문

Problem Solving

[Java] 문자열 안의 특정 문자만 뒤집기 | 인프런

luminous13 2022. 4. 19. 14:10

문제

 

풀이

문자열을 뒤집는 문제.  알파벳일 때만 뒤집으라는 제약조건이 있기 때문에 reverse() 메소드를 이용하기 보다 직접 문자를 뒤집는 방법이 낫다.

 

import java.util.Scanner;

public class Main {
    public static String solution(String str) {

        char[] chars = str.toCharArray();
        int leftIdx = 0;
        int rightIdx = chars.length-1;

        while(leftIdx < rightIdx) {
            // 왼쪽 문자가 특수문자인 경우
            if (!Character.isAlphabetic(chars[leftIdx])) {
                leftIdx++;
            }   // 오른쪽 문자가 특수문자인 경우
            else if (!Character.isAlphabetic(chars[rightIdx])) {
                rightIdx--;
            }   // 양쪽 문자가 알파벳인 경우
            else {
                char temp = chars[leftIdx];
                chars[leftIdx] = chars[rightIdx];
                chars[rightIdx] = temp;
                leftIdx++;
                rightIdx--;
            }
        }

        return String.valueOf(chars);
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.next();
        System.out.println(solution(str));
    }
}
Comments