strstr函数

LeetCode(28): 实现strStr()

孤街醉人 提交于 2019-12-26 13:04:42
Easy! 题目描述: 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例 1: 输入: haystack = "hello", needle = "ll" 输出: 2 示例 2: 输入: haystack = "aaaaa", needle = "bba" 输出: -1 说明: 当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。 对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。 解题思路: 这道题让我们在一个字符串中找另一个字符串第一次出现的位置,那我们首先要做一些判断,如果子字符串为空,则返回0,如果子字符串长度大于母字符串长度,则返回-1。 然后我们开始遍历母字符串,我们并不需要遍历整个母字符串,而是遍历到剩下的长度和子字符串相等的位置即可,这样可以提高运算效率。然后对于每一个字符,我们都遍历一遍子字符串,一个一个字符的对应比较,如果对应位置有不等的,则跳出循环,如果一直都没有跳出循环,则说明子字符串出现了,则返回起始位置即可。 C++解法: 1 class Solution { 2

Leetcode_28【实现strStr()】

£可爱£侵袭症+ 提交于 2019-12-14 00:09:53
文章目录: 题目 脚本一 脚本一逻辑 题目: 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例 1: 输入: haystack = "hello", needle = "ll" 输出: 2 示例 2: 输入: haystack = "aaaaa", needle = "bba" 输出: -1 说明: 当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。 对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。 脚本一:【用时:28ms】 class Solution: def strStr(self, haystack: str, needle: str) -> int: try: bb = haystack.index(needle) return(bb) except ValueError: return(-1) 脚本一逻辑: 此脚本调用字符串的方法index(),但此方法遇到没有包含的短字符串时,会返回ValueError 此时只需要调用try...except即可 脚本二:【用时:52ms】

strstr函数用法小结

谁都会走 提交于 2019-12-12 23:00:22
strstr函数用法小结 原创leeonfield 发布于2014-05-01 13:28:18 阅读数 9569 收藏 展开 strstr 函数原型: char * strstr(char * str1,char * str2); 功能就是找出在字符串str1中第一次出项字符串str2的位置(也就是说字符串sr1中要包含有字符串str2),找到就返回该字符串位置的指针(也就是返回字符串str2在字符串str1中的地址的位置),找不到就返回空指针(就是 null)。 #include<stdio.h> #include<string.h> int main() { char a[101],b[101]; scanf("%s %s",a,b); printf("%s\n",strstr(a,b)); printf("%d\n",strlen(a)+1-strlen(strstr(a,b))); /* char temp=strstr(a,b); printf("%s\n",temp); int length=strlen(a)+1-strlen(b); printf("%d\n",length); / return 0; } 这个代码实现的是找出字符串a中b的第一个字符出现的位置。 http://acm.swust.edu.cn/oj/problem/332/这个swust

leetcode28——实现strStr()(简单)

爷,独闯天下 提交于 2019-12-10 13:32:46
文章目录 题目 解答 结果 感想 题目 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例 1: 输入: haystack = “hello”, needle = “ll” 输出: 2 示例 2: 输入: haystack = “aaaaa”, needle = “bba” 输出: -1 说明: 当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。 对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/implement-strstr 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解答 class Solution : def strStr ( self , haystack : str , needle : str ) - > int : h_length = len ( haystack ) n_length = len ( needle ) if n_length =

[LeetCode] 28、实现 strStr()

偶尔善良 提交于 2019-12-10 13:18:46
题目描述 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例: 输入: haystack = “hello”, needle = “ll” 输出: 2 解题思路 这就是找子串问题,很好的 KMP题解 (这个是dp的KMP,可以先去复习传统的KMP,更好理解)。。。。。。。根本不是Easy难度,出题概率应该也不大。。。。。略过。 参考代码 class Solution { public int strStr ( String txt , String pat ) { int txt_length = txt . length ( ) ; int pat_length = pat . length ( ) ; if ( pat_length == 0 ) return 0 ; KMP mKmp = new KMP ( pat ) ; return mKmp . search ( txt ) ; } } public class KMP { private int [ ] [ ] dp ; private String pat ; public KMP ( String pat ) { this . pat = pat ;

leetcode-24-实现 strStr()-easy

谁说我不能喝 提交于 2019-12-10 05:16:42
题目描述 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例 1: 输入: haystack = “hello”, needle = “ll” 输出: 2 示例 2: 输入: haystack = “aaaaa”, needle = “bba” 输出: -1 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/implement-strstr 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题思路 因为是easy,暴力就完事了 wa了几次,两次因为鲁棒性不够,对输入数据的情况考虑不够。一次因为循环忘记break了 击败了94%的用户,暴力出奇迹 class Solution { public : int strStr ( string haystack , string needle ) { if ( needle . size ( ) == 0 ) { return 0 ; } if ( haystack . size ( ) == 0 ) { return - 1 ; } if ( needle . size ( ) > haystack

C语言博客作业05——指针

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-06 06:35:24
0.展示PTA总分 1.本章学习总结 1.1学习内容总结 a.地址和指针 在C语言中,指针被认为是计算及内存地址的代名词之一,指针变量本身就是变量,本身有一个地址,不同的是指针的 内容是地址 ,即存放的是地址。指针中有两个重要的符号,即 和&,其中 号第一次使用的时候,是用来定义一个指针变量,第一次使用后,再次使用,则表示这个指针的内容,也就是某个地址,而&号则是表示取地址的意思,在scanf()函数里,则是我们对&号的第一次接触,就是取地址的意思。 b.指针的定义 int *p;//用*表示定义一个指针变量,p就是一个指针。 int i; char *cp; p=NULL; cp=&i; Tip:指针变量被定义后,必须将指针变量和一个特定的变量进行关联后才可以使用它,不能在没有指向具体的某个变量情况下,对指针进行操作。 c.指针的基本运算 *p++ 先将*p作为表达式的值,再将指针p的值加一,运算后,p不在指向变量a,即*p=*(p+1)。 表达式 *(p++)和 *p++等价。 ++*p - ++*p的意思是将p所指的变量的值加一,和 *p= *p+1,( *p)++表示的意思是一样的。 指针的赋值运算 指针之间的赋值运算必须是同类型的 利用指针计算数组元素的个数和数组元素的存储个数 double *p,*q; double a[2]; p=&a[0]; q=p+1;

用指针形式实现strstr函数

巧了我就是萌 提交于 2019-12-05 02:27:33
char * mystrstr(char *dest,char * src) { char *p=null; char * temp=src; while(*dest)//只要不为'\0'就行 { p=dest;//进行多次赋值操作 while(*dest==*temp) { dest++;//指向下一个值的地址 temp++; } if(!*temp)//相当于if(*temp=='\0') return p; else temp=src;//重置了目标字符串 dest=p;//重置字符串,并指向下一个 dest++ } return NULL; } int main() { char *p = mystrstr("helllllo", "lllllo"); printf("%s\n", p); system("pause"); return EXIT_SUCCESS; } 来源: https://www.cnblogs.com/mingstatebird/p/11897752.html

PHP strstr 字符串函数

孤街浪徒 提交于 2019-12-04 08:01:33
定义和用法 strstr - 查找字符串的首次出现 版本支持 PHP4 PHP5 PHP7 支持 支持 支持 V5.3.0 新增可选的 before_needle 参数。 V4.3.0 strstr() 成为二进制安全的。 语法 strstr (string $haystack , mixed $needle [, bool $before_needle = FALSE ] )  返回 haystack 字符串从 needle 第一次出现的位置开始到 haystack 结尾的字符串。 该函数区分大小写。如果想要不区分大小写,请使用 stristr() 。 如果你仅仅想确定 needle 是否存在于 haystack 中,请使用速度更快、耗费内存更少的 strpos() 函数。   参数 参数 必需的 描述 haystack 是 输入字符串。 needle 是 如果 needle 不是一个字符串,那么它将被转化为整型并且作为字符的序号来使用。 before_needle 否 若为 TRUE,strstr() 将返回 needle 在 haystack 中的位置之前的部分。 返回值 返回字符串的一部分或者 FALSE(如果未发现 needle)。 $email = 'name@example.com'; $domain = strstr($email, '@'); echo

[Leetcode]28. 实现strStr()

匿名 (未验证) 提交于 2019-12-02 23:26:52
题目描述: 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 ++示例 1:++ 输入: haystack = "hello", needle = "ll" 输出: 2 ++示例 2:++ 输入: haystack = "aaaaa", needle = "bba" 输出: -1 说明: 当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。 对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。 我的方法: 该题较为简单,思路如下: 考虑needle不在haystack中的情况,直接返回-1。 主流程通过遍历haystack,比对haystack[i:i+ll]和needle是否相等,如果相等则直接返回位置。 考虑输入输出均为空的情况,此时for循环不会运行,直接返回0即可。 效果还行:执行用时 : 32 ms, 在Implement strStr()的Python提交中击败了78.80% 的用户。内存消耗 : 12 MB, 在Implement strStr()的Python提交中击败了23.08%