-
Notifications
You must be signed in to change notification settings - Fork 24
/
P82_1.java
34 lines (31 loc) · 1.38 KB
/
P82_1.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package ch20;
public class P82_1 {
public boolean contains(String sSubstr, String t) {
// 문자열을 문자 단위로 편하게 처리하기 위해 StringBuilder로 변환
StringBuilder sb = new StringBuilder(sSubstr);
// t를 문자 단위로 반복
for (char tElem : t.toCharArray()) {
// t의 문자가 sb에 포함되어 있다면 삭제하면서 진행
if (sb.indexOf(String.valueOf(tElem)) != -1)
sb.deleteCharAt(sb.indexOf(String.valueOf(tElem)));
else
return false;
}
// 중간에 빠진 문자 없이 모든 문자가 삭제됐다면 true 리턴
return true;
}
public String minWindow(String s, String t) {
// 슬라이딩 윈도우의 크기는 t의 크기부터 시작해서 점점 증가
for (int windowSize = t.length(); windowSize < s.length() + 1; windowSize++) {
// 해당 슬라이딩 윈도우로 전체 순회
for (int left = 0; left < s.length() - windowSize + 1; left++) {
// 윈도우 크기만큼 부분 문자열 생성
String sSubstr = s.substring(left, left + windowSize);
// 부분 문자열이 t를 포함하면 정답으로 리턴
if (contains(sSubstr, t))
return sSubstr;
}
}
return "";
}
}