문제:영어 알파벳과 특수문자로 구성된 문자열이 주어지면 영어 알파벳만 뒤집고,
특수문자는 자기 자리에 그대로 있는 문자열을 만들어 출력하는 프로그램을 작성하세요.
예제)
a#b!GE*T@S -> S#T!EG*b@a
public static void main(String[] args) {
problem5 prob = new problem5();
Scanner sc = new Scanner(System.in);
String word = sc.nextLine();
System.out.println(prob.solution(word));
}
public String solution(String word) {
String answer = "";
char[] arr = word.toCharArray();
int lt=0 , rt=arr.length-1; // 왼쪽, 오른쪽 문자열 나눔
for(int i=0; i<arr.length;i++) {
if(lt < rt) { // 중간에서 만나기전까지 for문 돌리기
if(!Character.isAlphabetic(arr[lt])) { // 왼쪽 문자가 특수문자일경우 인덱스 올려주기
lt++;
}
else if(!Character.isAlphabetic(arr[rt])) { // 오른쪽 문자가 특수 문자일 경우 오른쪽 인덱스 내려주기
rt--;
}
else { // 왼쪽 오른쪽 둘다 특수 문자가 아닌경우 자리 바꿔준다
char letter = arr[lt];
arr[lt] = arr[rt];
arr[rt] = letter;
lt++;
rt--;
}
}
}
answer = String.valueOf(arr);
return answer;
}
실행결과 성공!
입력: a#b!GE*T@S
출력: S#T!EG*b@a
'코딩 테스트 > 기타' 카테고리의 다른 글
[JAVA] 숫자만 추출해서 자연수로 만들기 (1) | 2023.02.06 |
---|---|
[JAVA] 앞으로 읽거나 뒤로 읽거나 같은 문자인지 확인 (0) | 2023.02.06 |
[JAVA] 문자열에서 반복되는 문자 제거 (0) | 2023.01.29 |
[JAVA] 문자 뒤집기 (0) | 2023.01.29 |
[JAVA] 주어진 단어가 문자에 몇 개 포함 되는지 (0) | 2023.01.29 |