面試題:字符串查找


難度:容易

 

字符串查找(又稱查找子字符串),是字符串操作中一個很有用的函數。你的任務是實現這個函數。

對於一個給定的 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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM