알고리즘

[문자열] 단어 뒤집기(StringBuilder 혹은 직접뒤집기) & 특정 문자 뒤집기

날아 2023. 3. 22. 15:34

Q.N개의 단어가 주어지면 각 단어를 뒤집어 출력하는 프로그램을 작성하라

Class Main {
	public ArrayList<String> solution(int n, String[] str){
    	ArratList<String> answer = new ArratList<>();
        for(String x : str) {
        	String tmp = new StringBuilder(x).reverse().toString(); 
            answer.add(tmp);
        }
        return answer;
    }
    
    public static void main(String[] args){
    	Main T = new Main(); 
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt(); 
        String[] str = new String[n]; 
        for(int i-0; i<n; i++){
        	str[i] = kb.next();
        }
        for(String x : T.solution(n, str)){
        	System.out.println(x);
        }
    }
}

 

 

  • StringBuilder.reverse() 메서드를 통해서 글자를 뒤집어준다. 그 후 toString() 메서드를 통해 문자열화한다. 
  • 다만, 이 경우 모든 글자가 뒤집어지니 특정 문자를 뒤집고싶을 경우 아래의 알고리즘을 따라야한다.

Q.특정 조건에 맞는 단어만 뒤집어라 

Class Main {
	public ArrayList<String> solution(int n, String[] str){
    	ArratList<String> answer = new ArratList<>();
        for(String x : str) {
        	char[] s = x.toCharArray();
            int lt = 0;
            int rt = x.length()-1;
            
            while(lt<rt){
            	char tmp = s[lt];
                s[lt] = s[rt];
                s[rt] = tmp;
                lt++;
                rt--;
            }
            String y = String.valueOf(s);
            answer.add(y);
        }
        return answer;
    }
    
    public static void main(String[] args){
    	Main T = new Main(); 
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt(); 
        String[] str = new String[n]; 
        for(int i-0; i<n; i++){
        	str[i] = kb.next();
        }
        for(String x : T.solution(n, str)){
        	System.out.println(x);
        }
    }
}

 

  • toCharArray() 메서드를 통해 문자열을 문자배열화 한다. 
  • lt    rt
  • open
  • npeo
  •   ltrt
  • nepo
  • valueOf() 메서드를 통해 뒤집은 문자배열을 문자열화 시켜준다. 

Q.특정 조건에 맞는 단어만 뒤집어라 

단, 영어 알파벳과 특수문자로 구성된 문자열이 주어지면 영어 알파벳만 뒤집어라

Class Main {
	public ArrayList<String> solution(String str){
    	String answer; 
        char[] s = str.toCharArray();
        int lt = 0;
        int rt = str.length()-1;
        
        while(lt<rt) {
        	if(!Character.isAlphabetic(s[lt])) {
            	lt++;
            } else if(!Character.isAlphabetic(s[rt])) {
            	rt--;
            } else {
            	char tmp = s[lt];
                s[lt] = s[rt];
                s[rt] = tmp;
                lt++;
                rt--;
            }
        }
        answer = String.valueOf(s);
        
        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));
    }
}