반응형
특정 문자 뒤집기는 char[] 배열의 값의 leftIndex, rightIndex를 이용해서 특수문자 일때는 continue하고, 알파벳 일때는 서로 swap을 하며 문제를 해결했다.
설명
영어 알파벳과 특수문자로 구성된 문자열이 주어지면 영어 알파벳만 뒤집고,
특수문자는 자기 자리에 그대로 있는 문자열을 만들어 출력하는 프로그램을 작성하세요.
입력
첫 줄에 길이가 100을 넘지 않는 문자열이 주어집니다.
출력
첫 줄에 알파벳만 뒤집힌 문자열을 출력합니다.
예시 입력 1
a#b!GE*T@S
예시 출력 1
S#T!EG*b@a
풀이
char[] syllables의 leftIndex의 값과 rightIndex의 값이 알파벳이 아니라 특수문자인 경우에는 leftIndex는 증감, rightIndex는 가감을 해주고 continue를 시켰다.
syllables의 leftIndex와 rightIndex의 값이 둘 다 알파벳이라면 정상적으로 swap을 진행시켰다.
package section01.E05_특정_문자_뒤집기;
import java.io.*;
public class Main {
public String solution(String word) {
char[] syllables = word.toCharArray();
int leftIndex = 0, rightIndex = word.length() - 1;
while (leftIndex < rightIndex){
if (!Character.isAlphabetic(syllables[leftIndex])) {
leftIndex++;
continue;
}
if (!Character.isAlphabetic(syllables[rightIndex])){
rightIndex--;
continue;
}
char rightSyllable = syllables[rightIndex];
syllables[rightIndex] = syllables[leftIndex];
syllables[leftIndex] = rightSyllable;
leftIndex++;
rightIndex--;
}
return String.valueOf(syllables);
}
public static void main(String[] args) throws IOException {
Main T = new Main();
BufferedReader br = new BufferedReader(new InputStreamReader((System.in)));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String word = br.readLine();
bw.write(T.solution(word));
bw.flush();
bw.close();
}
}
반응형