작성
·
347
0
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public String solution(String str) {
String answer = "";
char[] chrArr = str.toCharArray();
int lt = 0;
int rt = str.length() - 1;
while (lt < rt) {
if ((chrArr[lt] >= 65 && chrArr[lt] <= 90) || (chrArr[lt] >= 97 && chrArr[lt] <= 122)) {
if ((chrArr[rt] >= 65 && chrArr[rt] <= 90) || (chrArr[rt] >= 97 && chrArr[rt] <= 122)) {
char tmp = chrArr[lt];
chrArr[lt] = chrArr[rt];
chrArr[rt] = tmp;
}
}
lt++;
rt--;
}
answer = String.valueOf(chrArr);
return answer;
}
public static void main(String[] args) throws IOException {
Main m = new Main();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
br.close();
System.out.println(m.solution(str));
}
}
답변 2
0
지나가다 답 남깁니다
ascii 직접 조작은 너무 오류날 가능성이 많아 제가 짠 코드 남겨드립니다.
순수한 문자열객체만 정규식으로 남기고 reverse() 쓴 후 대상 포인터 위치에 도달할때 특문을 끼우는 방식으로 했습니다.
static class Solution {
public String solution(String str) {
//순수 문자열 추출하기
String pureStr = str.replaceAll("[^a-zA-z]","");
StringBuilder reverseStrSb = new StringBuilder().append(pureStr).reverse();
for(int i=0; i<str.length(); i++) {
if(!str.substring(i,i+1).matches("[a-zA-z]")) {
// 문자아니면
reverseStrSb.insert(i, str.charAt(i));
}
}
return reverseStrSb.toString();
}
0