我是靠谱客的博主 专注帽子,最近开发中收集的这篇文章主要介绍【LEETCODE】#28 实现strStr()(string的搜索操作),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

实现 strStr() 函数。

给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回  -1

示例 1:

输入: haystack = "hello", needle = "ll"
输出: 2

示例 2:

输入: haystack = "aaaaa", needle = "bba"
输出: -1

C++:

啊,原来居然是用作弊的方法做出来的啊orz

执行用时 : 16 ms, 在Implement strStr()的C++提交中击败了31.18% 的用户

内存消耗 : 9.5 MB, 在Implement strStr()的C++提交中击败了0.87% 的用户

class Solution {
public:
int strStr(string haystack, string needle) {
if(needle == "")
return 0;
if(haystack == "")
return -1;
int j,k;
for(int i=0; i<haystack.length(); i++) {
for(j=i,k=0; j<haystack.length() && k<needle.length(); j++,k++) {
if(haystack[j] != needle[k])
break;
}
if(k==needle.length())
return i;
else if(j==haystack.length())
return -1;
}
return -1;
}
};

C++: 

执行用时 : 16 ms, 在Implement strStr()的C++提交中击败了31.18% 的用户

内存消耗 : 9.5 MB, 在Implement strStr()的C++提交中击败了0.87% 的用户

#include <string>
class Solution {
public:
    int strStr(string haystack, string needle) {
        return (haystack.find(needle));
    }
};

【后记】

1.查string类的时候有种作弊的感觉/小纠结/小纠结/小纠结。本来想对needle的长度做个判断,后来发现不需要判断直接return就能过。。。emmmmm

2.string的搜索操作

#include <bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
std::string str ("There are two needles in this haystack with needles.");
std::string str2 ("needle");
// different member versions of find in the same order as above:
//在str当中查找第一个出现的needle,找到则返回出现的位置,否则返回结尾
std::size_t found = str.find(str2);
if (found!=std::string::npos)
std::cout << "first 'needle' found at: " << found << 'n';
//在str当中,从第found+1的位置开始查找参数字符串的前6个字符
found=str.find("needles are small",found+1,6);
if (found!=std::string::npos)
std::cout << "second 'needle' found at: " << found << 'n';
//在str当中查找参数中的字符串
found=str.find("haystack");
if (found!=std::string::npos)
std::cout << "'haystack' also found at: " << found << 'n';
//查找一个字符
found=str.find('.');
if (found!=std::string::npos)
std::cout << "Period found at: " << found << 'n';
//组合使用,把str2用参数表中的字符串代替
// let's replace the first needle:
str.replace(str.find(str2),str2.length(),"preposition");
std::cout << str << 'n';
return 0;
}

 

最后

以上就是专注帽子为你收集整理的【LEETCODE】#28 实现strStr()(string的搜索操作)的全部内容,希望文章能够帮你解决【LEETCODE】#28 实现strStr()(string的搜索操作)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部