[프로그래머스/181871] 문자열이 몇 번 등장하는지 세기
in Study / Coding Test
☑️ 문제
☑️ 풀이
첫 번째 풀이
//시간: 0.19ms
//메모리: 69.3MB
class Solution {
public int solution(String myString, String pat) {
int answer = 0;
int length = pat.length();
for (int i = 0; i <= myString.length() - length; i++) {
if (pat.equals(myString.substring(i, i + length))) {
answer++;
}
}
return answer;
}
}
- 반복문을 써서
pat
의 길이만큼 문자열을 순차적으로 잘라 확인하는 방식을 사용하였다.
두 번째 풀이
//시간: 0.58ms
//메모리: 88.4MB
class Solution {
public int solution(String myString, String pat) {
int answer = 0;
for (int i = 0; i < myString.length(); i++) {
if (myString.substring(i).startsWith(pat)) {
answer++;
}
}
return answer;
}
}
- 다른 사람의 풀이를 보고
startsWith()
메서드를 사용해보았다. substring(i)
으로 i부터 끝까지 문자열을 자른뒤, 해당 문자열이pat
으로 시작 하는 지 확인한다.
☑️ 문법 정리 - startsWith
기본 사용법
boolean startWith(String prefix)
- 문자열이 특정 문자열로 시작하는지 여부를 확인한다.
prefix
: 확인할 접두사 문자열- 주어진 접두사로 시작하면
true
, 그렇지 않으면false
를 리턴한다. 예시
String str = "Hello, World!"; System.out.println(str.startsWith("Hello")); // true System.out.println(str.startsWith("World")); // false
특정 위치에서 확인하는 startsWith()
boolean startsWith(String prefix, int offset)
offset
: 검사 시작 위치 (문자열의 인덱스)- 지정한 위치에서부터 문자열이 주어진 접두사로 시작하는지 확인한다.
예시
String str = "Hello, World!"; System.out.println(str.startsWith("World", 7)); // true System.out.println(str.startsWith("Hello", 7)); // false