特定の文字を反転(直接反転を使用)

1186 ワード

質問する



私の答え

import java.util.*;

class Main {
	public String solution(String str) {
		String answer = "";
		char[] a = str.toCharArray();
		int lt = 0 , rt = str.length()-1;
		while(lt<rt) {
			//a[lt]가 알파벳이 아닐시.
			if(!Character.isAlphabetic(a[lt])) lt++;
			//a[rt]가 알파벳이 아닐시.
			else if(!Character.isAlphabetic(a[rt])) rt--;
			//a[lt],a[rt]가 알파벳일시.
			else {
				char tmp = a[lt];
				a[lt] = a[rt];
				a[rt] = tmp;
				lt++;
				rt--;
			}
			
		}
		answer = String.valueOf(a);
		return answer;
    }
	
	public static void main(String[] args) {
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		String str = kb.next();
		System.out.println(T.solution(str));
	}
	
}

解法


toCharArrayメソッドで単語を配列に分割し、lt、rtでwhile文を返します.
もしltがアルファベットでない場合=特殊文字に遭遇します.変更せずにltを移動します.
rtがアルファベットでない場合=特殊文字に遭遇します.rtを変更せずに移動します.
またlt,rtがアルファベットであれば.配列[lt]、配列[rt]の位置を変更します.
lt++,rt--(lt,rt移動)
最後のStringvalueOf(配列)で答えに含めます.

コアキー


toCharArray(), String.復習valueOf()!
ltとrtを使った条件付き文字反転を理解!