-
2021-12-08 21:49:11
source为目标字符串,searchfor为子串。
通过变量k来控制目标字符串是否出现子串。
找到了返回子串在目标字符串出现的起始位置(从1开始),没找到返回-1
#include<string.h> int find(char source[], char searchfor[]){ int k = 0; for(int i = 0;source[i]!='\0';i++){ if( k==0&&source[i] == searchfor[k]){ k++; continue; } if(k>0 && source[i] == searchfor[k]){ k++; if(k==strlen(searchfor)){ return i-k+1;//返回目标字符串的子串末尾-子串长度+1 } continue; } k = 0; } return -1;//没找到返回1 }
source为目标字符串,searchfor为子串。
计算目标字符串中子串数量
char s1[1005] s2[1005]; int main() { fgets(s1,1004,stdin); fgets(s2,1004,stdin); int len1 = strlen(s1)-1,len2 = strlen(s2)-1; int ans = 0; for(int i = 0;i+len2-1<len1;i++) { int matched = 1; for(int j = 0;j<len2;j++) { if(s1[i+j]!=s2[j]) { matched = 0; break; } } if(matched) ans++; } printf("%d",ans); }
更多相关内容 -
在字符串中查找子串
2018-07-03 13:57:37题目:在字符串中查找子串。给定一个字符串A,要求在一个字符串中查找一个子串B。#include <iostream>#include<assert.h>#include<string.h>using namespace std;char * ...题目:在字符串中查找子串。给定一个字符串A,要求在一个字符串中查找一个子串B。
#include <iostream>
#include<assert.h>
#include<string.h>
using namespace std;
char * strfind(char *a,char * b)
{
assert(a!=NULL&&b!=NULL);
int lena=strlen(a);
int lenb=strlen(b);
if(lena<lenb) return NULL;
int i=0;
while(i<=lena-lenb)
{
int j=0;
while(j<lenb)
{
if(a[i+j]!=b[j])
break;
j++;
}
if(j==lenb)
return a+i;
i++;
}
return NULL;
}
char * strfind2(char *a,char * b)
{
assert(a!=NULL&&b!=NULL);
int lena=strlen(a);
int lenb=strlen(b);
if(lena<lenb) return NULL;
for(int i=0;i<=lena-lenb;i++)
{
int j=0;
for(;j<lenb;j++)
{
if(a[i+j]!=b[j])
break;
}
if(j==lenb)
return a+i;
}
return NULL;
}
int main()
{
char a[100]="ababcabcacbab";
char b[100]="abcac";
cout<<a<<endl;
cout<<b<<endl;
cout<<strfind(a,b)<<endl;
cout<<strfind2(a,b)<<endl;
return 0;
}
输出结果:
ababcabcacbab
abcac
abcacbab
abcacbab -
python实现在字符串中查找子字符串的方法
2020-12-23 13:30:18这里实现python在字符串中查找子字符串,如果找到则返回子字符串的位置,如果没有找到则返回-1 S = 'xxxxSPAMxxxxSPAMxxxx' where = S.find('SPAM') # search for position print where # occurs at offset 4 希望... -
Python字符串中查找子串小技巧
2020-12-24 17:03:34如果让你写一个程序检查字符串s2中是不是包含有s1。也许你会很直观的写下下面的代码: 复制代码 代码如下: #determine whether s1 is a substring of s2 def isSubstring1(s1,s2): tag = False len1 = len(s1... -
【Python入门教程】第82篇 常用字符串方法之查找子串
2022-03-03 14:27:27字符串的index() 方法和 find() 方法都可以用于查找字符串中子串第一次出现的位置。如果没有找到子串,index() 方法返回 ValueError 错误,但是 find() 方法返回 -1。本篇我们学习如何利用字符串的 index() 方法和 find() 方法获取字符串中子串的位置。
字符串 index() 方法
字符串的 index() 方法用于返回字符串中指定子串第一次出现的位置。index() 方法的语法如下:
str.index(sub[, start[, end]])
index() 方法包含三个参数:
- sub 是需要查找的子串。
- start 和 end 参数分别表示查找操作的开始位置和结束位置,它们都是可选参数。
如果在字符串 str 中的 str[start:end] 范围内没有找到子串 sub,index() 方法将会返回 ValueError 错误。
如果只需要判断字符串中是否存在某个子串,可以使用 in 操作符:sub in str。
index() 方法示例
下面我们来看几个使用 index() 方法的示例。
在字符串中查找子串的位置
以下示例使用 index() 方法在字符串“Python will, Python will rock you.’”中查找子串“Python”第一次出现的位置:
s = 'Python will, Python will rock you.' position = s.index('Python') print(position)
输出结果如下:
0
字符串 s 中包含两个子串“Python”,index() 方法返回了第一个子串的位置,字符串的下标位置从 0 开始。
在字符串指定范围内查找子串的位置
以下示例使用 index() 方法在字符串“Python will, Python will rock you.”的切片 str[1:] 中查找子串“Python”第一次出现的位置:
s = 'Python will, Python will rock you.' position = s.index('Python', 1) print(position)
输出结果如下:
13
以上示例返回子串“Python”在字符串 s 中第二次出现的位置。
在字符串中未找到指定的子串
以下示例返回了 ValueError 错误,因为字符串“Python will, Python will rock you.”中不存在子串“Java”:
s = 'Python will, Python will rock you.' position = s.index('Java') print(position)
输出结果如下:
ValueError: substring not found
如果希望没有找到子串的情况下不返回 ValueError 错误,可以使用字符串的 find() 方法查找子串。find() 方法在未找到子串时返回 -1,而不是 ValueError。
字符串 find() 方法
字符串的 index() 方法和 index() 方法类似,也可以用于返回字符串中指定子串第一次出现的位置。index() 方法的语法如下:
str.find(sub[, start[, end]])
find() 方法包含三个参数:
- sub 是需要查找的子串。
- start 和 end 参数分别表示查找操作的开始位置和结束位置,它们都是可选参数。start 默认为 0,end 默认为 length-1,length 是字符串 str 的长度。
如果在字符串 str 中的 str[start:end] 范围内没有找到子串 sub,find() 方法将会返回 -1。
find() 方法示例
在字符串中查找子串的位置
以下示例使用 find() 方法在字符串“Johny Johny Yes Papa”中查找子串“Johny”第一次出现的位置:
s = 'Johny Johny Yes Papa' result = s.find('Python') print(result)
输出结果如下:
0
字符串 s 中包含两个子串“Johny”,find() 方法返回了第一个子串的位置。
在字符串指定范围内查找子串的位置
以下示例使用 index() 方法在字符串“Johny Johny Yes Papa”的切片 str[1:] 中查找子串“Johny”第一次出现的位置:
s = 'Johny Johny Yes Papa' result = s.find('Johny', 1) print(result)
输出结果如下:
6
以上示例返回子串“Johny”在字符串 s 中第二次出现的位置。
在字符串中未找到指定的子串
以下示例返回了 -1,因为字符串“Johny Johny Yes Papa.”中不存在子串“Julia”:
s = 'Johny Johny Yes Papa' result = s.find('Julia') print(result)
输出结果如下:
-1
总结
- 字符串的index() 方法和 find() 方法都可以用于查找字符串中子串第一次出现的位置。
- 如果没有找到子串,index() 方法返回 ValueError 错误,但是 find() 方法返回 -1。
-
C语言中查找字符在字符串中出现的位置的方法
2020-09-03 10:02:48主要介绍了C语言中查找字符在字符串中出现的位置的方法,分别是strchr()函数和strrchr()函数的使用,需要的朋友可以参考下 -
查找字符串中的子串-C版
2022-07-01 19:40:20所以要想找到子串的位置,应该是两个字符串中对每一个字符进行依次比较,直到子串在父串中的每个字符都一一对应。逻辑:因为要从父串的每一个字符与子串的每一个字符相比较,最外层用一个for循环,用于控制最大比较...问题:用C语言实现传入两个字符串,找到子串在父串的第一次出现的位置。
分析:在C语言中没有字符串这一基本类型,字符串是用字符数组实现的。所以要想找到子串的位置,应该是两个字符串中对每一个字符进行依次比较,直到子串在父串中的每个字符都一一对应。
逻辑:因为要从父串的每一个字符与子串的每一个字符相比较,最外层用一个for循环,用于控制最大比较次数,里层用一个for循环控制子串的每一个字符与父串一一比较,相同就直接跳过,不同就直接跳出,二层的循环结束后,判断最后比较后的长度是否与子串相同,相同就表示都一一对应然后返回父串第一个比较字符的位置,如果内外层循环都没符合条件那就是找不到子串,最后返回-1。
下面是具体实现代码:
#include <stdio.h> #include <string.h> /*字符串寻找子串 -- 简单版*/ int find(char parents[], char son[]) { //最终返回子串第一次所在的索引位置 int len1 = strlen(parents); int len2 = strlen(son); for (int i = 0; i < len1; i++)//最多进行len1次比较 { int j,k = i; for (j = 0; j < len2; j++) { //子串一直比较到结尾如果都符合就返回比较第一次的值 if (parents[k++] == son[j]) { continue; }else{ break; } } if (j == len2) return i; } return -1;//找不到就返回 - 1 } int main() { /*测试数据*/ char a[] = "0123456789"; char b[] = "345"; printf("%d\n", find(a, b)); char c[] = "abc abc cad abc"; char d[] = "cad"; printf("%d\n", find(c, d)); return 0; }
有错误的地方还请多多指教!
-
Python字符串中查找子串的方法
2021-02-03 10:57:09Python字符串中查找子串的方法发布于 2015-04-12 08:58:32 | 230 次阅读 | 评论: 0 | 来源: 网友投递Python编程语言Python 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个... -
在Python中实现替换字符串中的子串的示例
2020-09-19 23:52:04今天小编就为大家分享一篇在Python中实现替换字符串中的子串的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
python七种方法判断字符串是否包含子串
2020-09-16 09:32:55主要介绍了python七种方法判断字符串是否包含子串,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下 -
PHP实现求两个字符串最长公共子串的方法示例
2020-10-18 23:43:38主要介绍了PHP实现求两个字符串最长公共子串的方法,涉及php字符串与数组的遍历、运算、判断等相关操作技巧,需要的朋友可以参考下 -
JavaScript自定义函数实现查找两个字符串最长公共子串的方法
2020-10-21 01:14:46主要介绍了JavaScript自定义函数实现查找两个字符串最长公共子串的方法,涉及javascript针对字符串的遍历、比较、查找等相关操作技巧,需要的朋友可以参考下 -
【字符串】实现strStr()——查找子串位置
2021-07-09 11:48:08给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。 说明: 当 needle 是空字符串时,我们应当返回什么值呢?这是一个... -
输入字符串1与子串2,在字符串1中查找子串,找不到,输出“No substring 子串",找到了,输出子串在字符串1...
2022-04-14 14:57:37【问题描述】输入字符串1与子串2,在字符串1中查找子串,找不到,输出“No substring 子串",找到了,输出子串在字符串1中出现的下标。 【输入形式】字符串1与子串2 【输出形式】子串出现的位置(下标),或无子串的... -
JS中查找一个字符串中所有子串的位置
2020-09-01 16:41:18/* * 查找一个字符串中的所有子串的位置 */ var str = "I think of other ages that floated upon the stream of life and love and death"; var positions = new Array(); function searchSubStr(str,subStr){ var... -
在一个字符串中查找子串的个数
2010-05-08 17:08:05在一个字符串s中查找有几个字串subs,结果返回字串的个数。主要用的indexOf()函数。 -
编写函数实现在字符串中查找子串,返回字符串中子串出现的次数
2020-12-12 20:17:37#include <stdio.h> #include <string.h> #include <stdlib.h> int find(char*a){ char*b=(char*)malloc(strlen(a)+1); scanf("%s",b); int i,j,cnt=0; for(i=0;... if(a[i+j] -
字符串匹配:字符串中查找某子串
2022-02-14 17:13:03基于C语言的字符串匹配算法,既有常规方法,又有KMP算法。 -
C语言版字符串查找函数,字符串中查找子串
2015-11-04 20:57:35C语言版字符串查找函数,字符串中查找子串 -
字符串中查找子串,并返回子串相对字符换的位置
2019-01-24 21:02:06int FindSubstring(const char* all, const char* sub) { int all_len = strlen(all); int sub_len = strlen(sub); int i = 0, j = 0; for (;i<all_len;++i) { if (all[i] == sub[0]) ... j... -
获取两字符串中所有公共子串
2019-01-21 09:40:15通过编辑距离算法对两字符串相似度对比后顺序取出所有公共子串 -
查找字符串中的子串数目
2020-06-26 19:27:38#include <stdio.h> #include <string.h> int string_find( char str[], char substr[] )... /*取得字符串长度,不包括'\0'*/ int sublen = strlen( substr ); for( i = 0; i < len; i++ ) { check -
Python在字符串中查找子字符串
2021-05-10 19:58:25这是小白博主在刷leetcode时遇到的一道题,这是博主近日刷的leetcode题库时结果表现最好的一道题,故在此分享这份喜悦。...给你两个字符串haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符... -
在母串中查找某子串出现的最后位置
2015-11-20 19:06:23不使用STL,设计一个算法,在串str中查找串substr最后一次出现的位置 -
C语言:查找子串字符在一个字符串中首次出现的位置
2022-02-28 20:32:59C语言:strstr()函数 int my_strstr(const char* str, const char* substr)//查找子串匹配位置 { assert(str != NULL && substr != NULL); int m = strlen(str); int n = strlen(substr); int i = 0, j = 0; ... -
字符串中的子串替换
2021-05-19 08:02:21在很多编程语言中,都封装了字符串替换的操作,那么我们这里自己用C语言来实现一个字符串替换的函数。具体需求为:Replace(String S,String T,String V),用V替换主串S中出现的所有与T相等的不重叠的子串。字符串...