Lecture4_4
public class Lecture4_4 {
public static void main(String[] args) {
// 값 받기
Scanner sc = new Scanner(System.in);
String s = sc.next();
String t = sc.next();
// 출력
int result = countAna(s, t);
System.out.println(result);
}
private static int countAna(String s, String t) {
// 카운트를 위한 변수
int count = 0;
// 초기화를 위한 변수
String sInit = s;
// 부분 문자열을 담을 HashMap
HashMap<Integer, String> sPartHM = new HashMap<>();
// 부분 문자열 HashMap 만들기
for (int i = 0; i < s.length() - t.length() + 1; i++) {
// 앞에서부터 t의 길이만큼만 문자열을 추출하여
String sPart = s.substring(i, i + t.length());
// HashMap에 담자
sPartHM.put(i, sPart);
// 초기화
s = sInit;
}
// for (Map.Entry<Integer, String> entrySet : sPartHM.entrySet()) {
// System.out.println(entrySet.getKey() + " : " + entrySet.getValue());
// }
// HashMap의 문자열 value와 문자열 t랑 비교하여 아나그램이면 count++
for (Map.Entry<Integer, String> entrySet : sPartHM.entrySet()) {
if (isAna(entrySet.getValue(), t)) {
count++;
}
}
return count;
}
// 아나그램인지 확인
private static boolean isAna(String value, String t) {
// 카운트를 위한 변수
int count = 0;
// 문자 배열로 바꾸고 오름차순 정렬
char[] valueArr = new char[value.length()];
valueArr = value.toCharArray();
Arrays.sort(valueArr);
char[] tArr = new char[t.length()];
tArr = t.toCharArray();
Arrays.sort(tArr);
// 각 문자열의 문자들을 비교하여 같으면 count++
for (int i = 0; i < value.length(); i++) {
if (valueArr[i] == tArr[i]) {
count++;
}
}
// 모두 같다면 true를 리턴
if (count == value.length()) {
return true;
} else {
return false;
}
}
}
Author And Source
이 문제에 관하여(Lecture4_4), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ikerbm94/Lecture44저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)