码迷,mamicode.com
首页 > 其他好文 > 详细

[容易]字符串查找

时间:2016-05-01 17:27:40      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:

题目来源:http://www.lintcode.com/zh-cn/problem/strstr/

技术分享

这道题注意边界条件,提交了三次才通过。

1字符串是否为NULL

2source为NULL,target不为NULL,返回0,而不是-1

采用的方法是最简单的朴素模板匹配算法。

可以accept的程序如下:

 1 class Solution {
 2 public:
 3     /**
 4      * Returns a index to the first occurrence of target in source,
 5      * or -1  if target is not part of source.
 6      * @param source string to be scanned.
 7      * @param target string containing the sequence of characters to match.
 8      */
 9     int strStr(const char *source, const char *target) {
10         // write your code here
11         if (source == NULL || target == NULL) 
12             return -1; 
13         int i=0,j=0;
14         while(i<strlen(source)&&j<strlen(target))
15         {
16             if(source[i]==target[j])
17             {
18                 i++;
19                 j++;
20             }
21             else
22             {
23                 i=i-j+1;
24                 j=0;
25             }
26         }
27         if(j==strlen(target))
28             return i-strlen(target);
29         else 
30             return -1;
31     }
32 };

可以Accept的正确程序2:

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

[容易]字符串查找

标签:

原文地址:http://www.cnblogs.com/hslzju/p/5450661.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!