TIL

[코테연습] 1455. Check If a Word Occurs As a Prefix of Any Word in a Sentence

크라00 2024. 12. 2. 22:15

https://leetcode.com/problems/check-if-a-word-occurs-as-a-prefix-of-any-word-in-a-sentence/description/?envType=daily-question&envId=2024-12-02

 

문제타입

  • 문자열 처리: 문자열에서 특정 단어가 접두사(prefix)로 포함되어 있는지 확인하는 문제.
  • 탐색 문제: 주어진 문장에서 단어를 순차적으로 탐색하며 조건을 만족하는지 검사.

문제분석

  • 입력:
    • sentence: 공백으로 구분된 단어들의 문자열.
    • searchWord: 찾고자 하는 접두사 단어.
  • 출력:
    • searchWord가 접두사로 포함된 단어의 위치(1부터 시작).
    • 접두사로 포함된 단어가 없으면 -1 반환.
  • 제약조건:
    • sentence는 공백으로 구분된 최소 1개 이상의 단어로 구성.
    • searchWord는 1개 이상의 알파벳 소문자로 구성.
  • 핵심문제:
    • sentence를 단어 단위로 분리한 후 각 단어의 접두사 여부를 확인.
    • 첫 번째로 접두사 조건을 만족하는 단어의 위치를 반환해야 함.

문제풀이

  • 문자열 분리:
    • split(" ")을 사용하여 공백으로 단어를 나눔.
  • 반복문을 통한 탐색:
    • for문을 사용하여 각 단어를 확인.
    • startsWith(searchWord)를 사용해 접두사 여부를 검사.
  • 조건 충족 시 즉시 반환:
    • 접두사 조건을 만족하면 i + 1 (1-based index) 반환.
  • 조건 미충족 시 반환:
    • 모든 단어를 탐색했음에도 조건을 만족하지 않으면 -1 반환.
  • 시간 복잡도:
    • 단어의 개수가 n이고 각 단어의 길이가 최대 m일 때, 최악의 경우 O(n * m).

 

> java

 

class Solution {
    public int isPrefixOfWord(String sentence, String searchWord) {
        String[] arr = sentence.split(" ");
        int n = arr.length;
        for (int i = 0; i < n; i++) {
            if (arr[i].startsWith(searchWord)) {
                return i+1;
            }
        }
        return -1;
    }
}