영어 알파벳과 특수문자로 구성된 문자열이 주어지면 영어 알파벳만 뒤집고,
특수문자는 자기 자리에 그대로 있는 문자열을 만들어 출력하는 프로그램을 작성하세요.
첫 줄에 길이가 100을 넘지 않는 문자열이 주어집니다.
첫 줄에 알파벳만 뒤집힌 문자열을 출력합니다.
import java.util.Scanner;
class Main {
public static String solution(String str) {
String answer;
char[] charArray = str.toCharArray();
int lt = 0;
int rt = str.length()-1;
while (lt < rt) {
if (!Character.isAlphabetic(charArray[lt])) {
lt++;
}
else if (!Character.isAlphabetic(charArray[rt])) {
rt--;
}
else {
char tmp = charArray[lt];
charArray[lt] = charArray[rt];
charArray[rt] = tmp;
lt++;
rt--;
}
}
answer = String.valueOf(charArray);
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
System.out.println(solution(str));
}
}
1-4 의 문자 뒤집기와 같은 원리로 lt와 rt를 통해서 단어의 양끝부터 조사한다.
lt, rt번째에 있는 값이 문자열이 아니라면 바꿀 필요가 없기때문에 lt++, rt는 rt--를 해준다.
그렇지않다면 lt에 있는 값과 rt에 있는 값을 바꿔주기만 하면 되는 것이다.
Character.isAlphabetic(x) : x가 알파벳인지 확인하고 알파멧이면 true 반환
Character메소드