영어 알파벳과 특수문자로 구성된 문자열이 주어지면 영어 알파벳만 뒤집고,
특수문자는 자기 자리에 그대로 있는 문자열을 만들어 출력하는 프로그램을 작성하세요.
첫 줄에 길이가 100을 넘지 않는 문자열이 주어집니다.
첫 줄에 알파벳만 뒤집힌 문자열을 출력합니다.
a#b!GE*T@S
S#T!EG*b@a
public class StringEx_5 {
public String solution(String input) {
String answer;
char[] chars = input.toCharArray();
// 인덱스
int lt = 0, rt = chars.length-1;
while (lt < rt) {
// 알파벳만 자리변경
if (!Character.isAlphabetic(chars[lt])) {
lt++;
} else if (!Character.isAlphabetic(chars[rt])) {
rt--;
} else {
char tmp = chars[lt];
chars[lt] = chars[rt];
chars[rt] = tmp;
lt++;
rt--;
}
}
answer = String.valueOf(chars);
return answer;
}
public static void main(String[] args) throws IOException {
StringEx_5 T = new StringEx_5();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
System.out.println(T.solution(input));
}
}
Character의 isAlphabetic()메소드로 쉽게 알파벳 여부를 체크할 수 있다는 것을 알게 되었다.
전체 문장을 뒤집는 문제와 유사해서 푸는데 큰 어려움은 없었다.