특정 문자만 뒤집기
설명
저번에 풀었던 문제에서 뒤집기 알고리즘을 확인했었다.
거꾸로 출력하기
이 알고리즘을 활용하여 특정 문자만 뒤집는 문제를 풀어보자.
문제는 영어단어와 특수문자로 이루어진 문자열이 입력되었을 때 알파벳일 경우 현재 위치에서 반대 위치로 뒤집고 특수문자는 그대로 고정시킨다는 개념이다.
코드
public class ReverseSpecificWord {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
String input = in.next();
char[] chars = input.toCharArray();
int charLeng = chars.length;
int start = 0;
int end = charLeng-1;
while(start<end){
char word1 = chars[start];
char word2 = chars[end];
String check = "^[a-zA-Z]*$";
if(!Pattern.matches(check, word1+"")){
start++;
}else if(!Pattern.matches(check, word2+"")){
end--;
}else{
char temp = chars[start];
chars[start] = chars[end];
chars[end] = temp;
start++;
end--;
}
}
System.out.println(new String(chars));
}
}
public class ReverseSpecificWord {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
String input = in.next();
char[] chars = input.toCharArray();
int charLeng = chars.length;
int start = 0;
int end = charLeng-1;
while(start<end){
char word1 = chars[start];
char word2 = chars[end];
String check = "^[a-zA-Z]*$";
if(!Pattern.matches(check, word1+"")){
start++;
}else if(!Pattern.matches(check, word2+"")){
end--;
}else{
char temp = chars[start];
chars[start] = chars[end];
chars[end] = temp;
start++;
end--;
}
}
System.out.println(new String(chars));
}
}
저번에 사용한 알고리즘에 java 정규식을 더하여 문제를 풀어보았다. 정규식으로 체크하는 것 말고도
Character.isAlphabetic()
이라는 메서드를 통해 알파벳인지 확인할 수도 있는데. 알파벳 문제만 풀진 않을거니까... 정규식도 알아두면 좋을 것 같다. 정규식도 알고보면 간단한건 금방 만들 수 있으니까 모른다면 조금 공부해보길 권장한다.
뒤집기 알고리즘 심화문제
Author And Source
이 문제에 관하여(특정 문자만 뒤집기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ililil9482/특정-문자만-뒤집기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)