Проблема

Напишите программу, определяющую, является ли входная строка x подстрокой другой входной строки y. (Например, «летучая мышь» — это подстрока слова «убавлять», но не слова «бить».)

Решение

Ответ (на С++):

bool hasSubstring(const char *str, const char *find) {
   if( ! str || ! find ) 
      return false;
   if (str[0] == '\0' && find[0] == '\0')
      return true;
   for(int i = 0; str[i] != '\0'; i++) {
      bool foundNonMatch = false;
      for(int j = 0; find[j] != '\0'; j++) {
         if (str[i + j] != find[j]) {
            foundNonMatch = true;
            break;
         }
      }
      if (!foundNonMatch)
         return true;
   }
   return false;
}

Подробнее: http://articles.leetcode.com/2010/04/hacking-google-interview-from-mit.html

http://courses.csail.mit.edu/iap/interview/Hacking_a_Google_Interview_Practice_Questions_Person_A.pdf