aboutsummaryrefslogtreecommitdiff
path: root/check_word_occur_prefix_sentence.c
blob: 0e60bb1a428657ca4eb7d830503cab0dc6dc890d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// 1455. Check If a Word Occurs As a Prefix of Any Word in a Sentence
#include "leetcode.h"

/*
 * given a 'sentence' that consists of some words separated by a single space,
 * and a 'searchWord', check if 'searchWord' is a prefix of any word in
 * 'sentence'. return the index of the word in 'sentence' (1-indexed) where
 * 'searchWord' is a prefix of the word. if 'searchWord' is a prefix of more
 * than one word, return the index of the first word (minimum index). if there
 * is no such word, return -1. a prefix of a string 's' is any leading
 * contiguous substring of 's'.
 */

int isPrefixOfWord(char *sentence, char *searchWord) {
  int word_idx = 1;
  char *search_ptr;
  while (*sentence != '\0') {
    search_ptr = searchWord;
    while (*sentence == *search_ptr && *search_ptr != '\0') {
      ++sentence;
      ++search_ptr;
    }
    if (*search_ptr == '\0')
      return word_idx;
    while (*sentence != '\0' && *(sentence++) != ' ')
      ;
    ++word_idx;
  }
  return -1;
}

int main() {
  char *s1 = "i love eating burger", *sw1 = "burg";
  char *s2 = "this problem is an easy problem", *sw2 = "pro";
  char *s3 = "i am tired", *sw3 = "you";
  printf("%d\n", isPrefixOfWord(s1, sw1)); // expect: 4
  printf("%d\n", isPrefixOfWord(s2, sw2)); // expect: 2
  printf("%d\n", isPrefixOfWord(s3, sw3)); // expect: -1
}