영어 알파벳과 특수문자로 구성된 문자열이 주어지면 영어 알파벳만 뒤집고,
특수문자는 자기 자리에 그대로 있는 문자열을 만들어 출력하는 프로그램을 작성하세요.
첫 줄에 길이가 100을 넘지 않는 문자열이 주어집니다.
첫 줄에 알파벳만 뒤집힌 문자열을 출력합니다.
| 예시 입력 | 예시 출력 |
|---|---|
| a#b!GE*T@S | S#T!EG*b@a |
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String str = sc.next();
char[] ch = str.toCharArray();
int lt = 0, rt = str.length() - 1;
while(lt < rt){
if(!Character.isAlphabetic(ch[lt])){
lt++;
}else if(!Character.isAlphabetic(ch[rt])){
rt--;
}else{
char tmp = ch[lt];
ch[lt] = ch[rt];
ch[rt] = tmp;
lt++;
rt--;
}
}
System.out.println(String.valueOf(ch));
}
}
1. 입력받기 및 초기화 : 문자열을 입력받아 문자 배열로 변환하고, lt와 rt 인덱스를 각각 문자열의 시작과 끝으로 초기화합니다.
2. 알파벳 확인 및 스왑:
lt가 가리키는 문자가 알파벳이 아니면 lt를 증가시켜 다음 문자로 넘어갑니다.
rt가 가리키는 문자가 알파벳이 아니면 rt를 감소시켜 이전 문자로 넘어갑니다.
두 인덱스 모두 알파벳을 가리키고 있을 때는 두 문자를 서로 교환하고, lt는 증가시키고 rt는 감소시킵니다. 그리고 lt가 rt와 같거나 커지면 반복을 종료합니다.
Character.isAlphabetic() : 알파벳인지 확인하는 메서드