728x90

- 알파벳만 뒤집고 특수문자는 자기 자리에 그대로 존재하는 문자열 반환

 

(입력)

a!b@Cm%k#I
!@#a%^bcd*@F

 

(출력)

 

# replaceAll, reverse, charAt 사용


public class Main {

    public Boolean isAlpha(char c) {
        if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) return true;
        return false;
    }

    private String solution(String s) {
        String answer = "";
        String alpha = new StringBuilder(s.replaceAll("[^a-zA-Z]", "")).reverse().toString();

        int j = 0;
        for (int i=0; i<s.length(); i++) {
            if (isAlpha(s.charAt(i))) {
                answer += alpha.charAt(j);
                j++;
            }
            else
                answer += s.charAt(i);
        }
        return answer;
    }

    public static void main(String[] args) {
        Main T = new Main();
        System.out.println(T.solution("a!b@Cm%k#I")); // I!k@mC%b#a
        System.out.println(T.solution("!@#a%^bcd*@F")); // !@#F%^dcb*@a
    }
}

- s 에서 알파벳 문자만 추출해서 reverse 한 String : alpha

- for 문 돌려서 알파벳이면 alpha 문자 순서대로 추가

 

 

 

# toCharArray, Character.isAlphabetic, String.valueOf 사용


public class Main {

    private String solution(String s) {
        String answer = "";
        char[] str = s.toCharArray(); // String -> char[]
        int l = 0;
        int r = s.length()-1;

        while(l < r) {
            if(!Character.isAlphabetic(str[l])) l++;
            else if(!Character.isAlphabetic(str[r])) r--;
            else {
                char tmp = str[l];
                str[l] = str[r];
                str[r] = tmp;
                l++;
                r--;
            }
        }
        answer = String.valueOf(str); // char[] -> String
        return answer;
    }

    public static void main(String[] args) {
        Main T = new Main();
        System.out.println(T.solution("a!b@Cm%k#I")); // I!k@mC%b#a
        System.out.println(T.solution("!@#a%^bcd*@F")); // !@#F%^dcb*@a
    }
}

- 양쪽에서 이동하며 비교해서 알파벳이면 자리 바꿈

- Character.isAlphabetic : 문자가 알파벳인지 확인

- char[] str = s.toCharArray(); : String -> char[]

- String.valueOf(str); : char[] -> String

 

 

# 휴..

- isAlpha 라는 함수를 만들었는데 Character.isAlphabetic 라는 함수가 있구나..

반응형

'전.java' 카테고리의 다른 글

2023.01.27(금)  (0) 2023.01.27
[Java] 학급 회장  (0) 2023.01.27
[Java] 회문 문자열 2  (0) 2023.01.27
[Java] 회문 문자열  (0) 2023.01.27
[Java] 문자열 압축  (1) 2023.01.26
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기