面试题:字符串查找

难度:容易

 

字符串查找(又称查找子字符串),是字符串操作中一个很有用的函数。你的任务是实现这个函数。

对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。

如果不存在,则返回 -1

样例

如果 source = "source" 和 target = "target",返回 -1

如果 source = "abcdabcdefg" 和 target = "bcd",返回 1

挑战

O(n2)的算法是可以接受的。如果你能用O(n)的算法做出来那更加好。(提示:KMP)

说明

在面试中我是否需要实现KMP算法?

  • 不需要,当这种问题出现在面试中时,面试官很可能只是想要测试一下你的基础应用能力。当然你需要先跟面试官确认清楚要怎么实现这个题。

 

答案:

 1 class Solution {
 2     /**
 3      * Returns a index to the first occurrence of target in source,
 4      * or -1  if target is not part of source.
 5      * @param source string to be scanned.
 6      * @param target string containing the sequence of characters to match.
 7      */
 8     public int strStr(String source, String target) {
 9         if (source == null || target == null) {
10             return -1;
11         }
12         
13         int i, j;
14         for (i = 0; i < source.length() - target.length() + 1; i++) {
15             for (j = 0; j < target.length(); j++) {
16                 if (source.charAt(i + j) != target.charAt(j)) {
17                     break;
18                 }
19             }
20             if (j == target.length()) {
21                 return i;
22             }
23         }
24         return -1;
25     }
26 }

 

posted @ 2015-08-29 02:41  -小城-  阅读(4438)  评论(0编辑  收藏  举报