문자열 str1, str2가 매개변수로 주어집니다. str1 안에 str2가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요.
str1 | str2 | result |
---|---|---|
"ab6CDE443fgh22iJKlmn1o" | "6CD" | 1 |
"ppprrrogrammers" | "pppp" | 2 |
"AbcAbcA" | "AAA" | 2 |
입출력 예 #1
"ab6CDE443fgh22iJKlmn1o" str1에 str2가 존재하므로 1을 return합니다.
입출력 예 #2
"ppprrrogrammers" str1에 str2가 없으므로 2를 return합니다.
입출력 예 #3
"AbcAbcA" str1에 str2가 없으므로 2를 return합니다.
class Solution {
public int solution(String str1, String str2) {
return str1.contains(str2) ? 1 : 2;
}
}
str1.split(str2).length 로 판단 하려고했는데 테스트케이스에서 통과가 안되길래 파악해보니 앞과 뒤에 문자열이 배치되어있을 경우 length 가 1만 나오는거였다.
for문으로 돌려서 찾기도 원활하지않아서 관련 메서드가 뭐가 있을지 찾아보니 바로 contains 함수가 나왔다.
class Solution {
public int solution(String str1, String str2) {
int len1 = str1.length();
int len2 = str2.length();
if (len2 > len1) {
return 2;
}
for (int i = 0; i < len1 - len2 + 1; i++) {
if (str1.charAt(i) == str2.charAt(0)) {
for (int j = 0; j < len2; j++) {
if (str1.charAt(i + j) == str2.charAt(j)) {
if (j == len2 - 1) {
return 1;
}
continue;
}
break;
}
}
}
return 2;
}
}
참고사이트: https://school.programmers.co.kr/learn/courses/30/lessons/120908/solution_groups?language=java