精华内容
下载资源
问答
  • 在字符串中查找子串的位置
    千次阅读
    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 &lt;iostream&gt;#include&lt;assert.h&gt;#include&lt;string.h&gt;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在字符串中查找字符串,如果找到则返回子字符串位置,如果没有找到则返回-1 S = 'xxxxSPAMxxxxSPAMxxxx' where = S.find('SPAM') # search for position print where # occurs at offset 4 希望...
  • 如果让你写一个程序检查字符串s2是不是包含有s1。也许你会很直观的写下下面的代码: 复制代码 代码如下: #determine whether s1 is a substring of s2 def isSubstring1(s1,s2):  tag = False  len1 = len(s1...
  • 字符串的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语言中查找字符在字符串中出现的位置的方法,分别是strchr()函数和strrchr()函数的使用,需要的朋友可以参考下
  • 所以要想找到子串位置,应该是两个字符串中对每一个字符进行依次比较,直到子串在父串的每个字符都一一对应。逻辑:因为要从父串的每一个字符与子串的每一个字符相比较,最外层用一个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:09
    Python字符串中查找子串的方法发布于 2015-04-12 08:58:32 | 230 次阅读 | 评论: 0 | 来源: 网友投递Python编程语言Python 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个...
  • 今天小编就为大家分享一篇Python实现替换字符串中子串的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 主要介绍了python七种方法判断字符串是否包含子串,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
  • 主要介绍了PHP实现求两个字符串最长公共子串的方法,涉及php字符串与数组的遍历、运算、判断等相关操作技巧,需要的朋友可以参考下
  • 主要介绍了JavaScript自定义函数实现查找两个字符串最长公共子串的方法,涉及javascript针对字符串的遍历、比较、查找等相关操作技巧,需要的朋友可以参考下
  • 给你两个字符串 haystack 和 needle ,请你 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。 说明: 当 needle 是空字符串时,我们应当返回什么值呢?这是一个...
  • 【问题描述】输入字符串1与子串2,在字符串1中查找子串,找不到,输出“No substring 子串",找到了,输出子串在字符串1出现的下标。 【输入形式】字符串1与子串2 【输出形式】子串出现的位置(下标),或无子串的...
  • /* * 查找一个字符串中的所有子串位置 */ 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...
  • 一个字符串s中查找有几个字串subs,结果返回字串的个数。主要用的indexOf()函数。
  • #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语言版字符串查找函数,字符串中查找子串
  • int FindSubstring(const char* all, const char* sub) { int all_len = strlen(all); int sub_len = strlen(sub); int i = 0, j = 0; for (;i&lt;all_len;++i) { if (all[i] == sub[0]) ... j...
  • 通过编辑距离算法对两字符串相似度对比后顺序取出所有公共子串
  • #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 字符...
  • 不使用STL,设计一个算法,在串str中查找串substr最后一次出现的位置
  • C语言: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相等的不重叠的子串字符串...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 85,818
精华内容 34,327
关键字:

在字符串中查找子串的位置