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 |