[프로그래머스/181871] 문자열이 몇 번 등장하는지 세기

☑️ 문제

프로그래머스 181871

☑️ 풀이

첫 번째 풀이

//시간: 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
    

© 2021. All rights reserved.

yaejinkong의 블로그