인프런 커뮤니티 질문&답변
저는 이렇게 풀어봤는데 왜 정답이 아닌지 모르겠어요 ㅠㅠ
작성
·
434
0
package main;
import java.util.Scanner;
public class Main {
public String solution(String str) {
String answer = "YES";
str = str.toUpperCase();
int lt = 0, rt = str.length() - 1;
char[] ch = str.toCharArray();
while (lt < rt) {
char tmp = ch[rt];
ch[rt] = ch[lt];
ch[lt] = tmp;
lt++;
rt--;
}
if (String.valueOf(ch) != str) {
answer = "NO";
}
return answer;
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str = scan.next();
Main T = new Main();
System.out.println(T.solution(str));
}
}
퀴즈
대소문자를 구분하지 않고 문자열 내 특정 문자의 총 개수를 세려면, 어떤 방법이 가장 효율적일까요?
문자열을 반복하며 각 문자가 찾으려는 문자의 대문자 또는 소문자인지 모두 비교한다.
문자열 전체를 한 가지 케이스(예: 모두 대문자)로 통일한 후 해당 문자의 개수를 센다.
대문자와 소문자의 개수를 각각 세어 합산한다.
Set 자료구조를 사용하여 중복 없이 문자를 저장한 후 개수를 센다.
답변 2
0
0
김태원
지식공유자
안녕하세요^^
string 과 문자배열은 문자열 비교가 안됩니다. 아래와 같이 바꿔야 합니다.
import java.util.Scanner;
public class Main {
public String solution(String str) {
String answer = "YES";
str = str.toUpperCase();
int lt = 0, rt = str.length() - 1;
char[] ch = str.toCharArray();
while (lt < rt) {
char tmp = ch[rt];
ch[rt] = ch[lt];
ch[lt] = tmp;
lt++;
rt--;
}
String tmp = new String(ch);
if (!str.equals(tmp)) {
answer = "NO";
}
return answer;
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String str = scan.next();
Main T = new Main();
System.out.println(T.solution(str));
}
}





