관리 메뉴

여름 언덕에서 배운 것

[0단계 / 5점 ]indexOf , 문자열이 몇 번 등장하는지 세기 본문

가랑비에 옷 젖는 줄 모른다 💻/🌰코테문풀_꾸준히

[0단계 / 5점 ]indexOf , 문자열이 몇 번 등장하는지 세기

잔뜩 2025. 2. 1. 12:22

indexOf 함수를 이해하는데 시간이 좀 걸렸다. 

class Solution {
    public int solution(String myString, String pat) {
        int answer = 0;
        int idx = myString.indexOf(pat);
        while(idx !=-1){
            answer++;
            idx = myString.indexOf(pat,idx+1);
        }
        return answer;
    }
}

 

✅ indexOf() 함수는 왼쪽에서 오른쪽으로 차례대로 탐색하는 함수

🔍 indexOf()의 동작 방식 (기본 개념)

int index = myString.indexOf("찾을 문자열", 시작 인덱스);

🔹 왼쪽에서 오른쪽으로 차례대로 탐색
🔹 "찾을 문자열"이 처음 등장하는 위치(인덱스)를 반환
🔹 "찾을 문자열"이 없으면 -1 반환
🔹 시작 인덱스(startIndex)를 설정하면 해당 위치부터 탐색 시작

 

🛠 예제 2: indexOf(찾을 문자열, 시작 인덱스) 사용

String text = "hello world";
int index1 = text.indexOf("o");      // 'o' 찾기 → 4
int index2 = text.indexOf("o", 5);   // 인덱스 5부터 'o' 찾기 → 7

System.out.println(index1); // 4
System.out.println(index2); // 7

🔥 예제 3: "banana"에서 "ana" 찾는 과정 (한 글자씩 이동!)

String myString = "banana";
int index1 = myString.indexOf("ana");      // 첫 번째 "ana"
int index2 = myString.indexOf("ana", 2);   // 인덱스 2부터 검색

System.out.println(index1); // 1
System.out.println(index2); // 3

🔹 "banana"에서 "ana"를 찾는 과정:

banana
 ↑↑↑
 ana  (index = 1)  // 첫 번째 발견

banana
   ↑↑↑
   ana  (index = 3)  // 인덱스 2부터 다시 검색, 인덱스 3에서 발견

 

🔹   세 번째 "ana" 찾기? (indexOf("ana", 4))

인덱스 4부터 다시 검색했지만 "ana" 없음 → index = -1

banana
      (X)

 

 

** 다른 사람 풀이

class Solution {
    public int solution(String myString, String pat) {
        int cnt = 0;
        for(int i=0; i<myString.length(); i++) {
            if(myString.substring(i).startsWith(pat)){
                cnt++;
            }
        }
        return cnt;
    }
}
728x90