给定两个字符串str1和str2,查找str2在str1中出现的位置

2024-05-11 13:48

本文主要是介绍给定两个字符串str1和str2,查找str2在str1中出现的位置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

给定string str1和string str2,编写一个库函数,返回str2在str1中的位置。

如:str1为"ABCDLANCEXYZ",str2为"LANCE",则返回位置5。如果没有找到,返回-1。(起始位置从1开始)

// findSubStrPosition.c
#include <stdio.h>int findSubStrPosition(const char *pStr1, const char *pStr2)
{int len1 = strlen(pStr1);int len2 = strlen(pStr2);if (len1 < len2)return -1;int i = 0;for ( ; i < len1; i++){int j = 0;if (pStr1[i] != pStr2[j])continue;while(j < len2 & i+j < len1){j++;if (pStr1[i+j] != pStr2[j])break;}if (j == len2)return i+1 ; // start 1}return -1;
}int main()
{const char *str1 = "ABCDLANCEXYZ";const char *str2 = "LANCE";int position = 0;position = findSubStrPosition(str1, str2);printf("the substring position is %d\n", position);return 0;
}

// findSubStrPosition.cpp
#include <iostream>
#include <string>bool isSubstr(std::string str1, std::string str2)
{if (str1.length() < str2.length())return false;int index = 0;while(index < str2.length()){if(str2[index] == str1[index])index++;elsereturn false;}return true;
}int findSubStrPosition(std::string str1, std::string str2)
{int index = 0;while(index < (str1.length() - str2.length())){if (isSubstr(str1.substr(index), str2))return index + 1;   // start 1elseindex++;}return -1;
}int main()
{std::string str1 = "ABCDLANCEXYZ";std::string str2 = "LANCE";int position = 0;position = findSubStrPosition(str1, str2);std::cout<< "the substring position is "<< position << std::endl;//std::cout<< "the substring position is "<< str1.find(str2) << std::endl;return 0;
}

这篇关于给定两个字符串str1和str2,查找str2在str1中出现的位置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/979710

相关文章

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Python 常用数据类型详解之字符串、列表、字典操作方法

《Python常用数据类型详解之字符串、列表、字典操作方法》在Python中,字符串、列表和字典是最常用的数据类型,它们在数据处理、程序设计和算法实现中扮演着重要角色,接下来通过本文给大家介绍这三种... 目录一、字符串(String)(一)创建字符串(二)字符串操作1. 字符串连接2. 字符串重复3. 字

Java 字符串操作之contains 和 substring 方法最佳实践与常见问题

《Java字符串操作之contains和substring方法最佳实践与常见问题》本文给大家详细介绍Java字符串操作之contains和substring方法最佳实践与常见问题,本文结合实例... 目录一、contains 方法详解1. 方法定义与语法2. 底层实现原理3. 使用示例4. 注意事项二、su

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

Java使用正则提取字符串中的内容的详细步骤

《Java使用正则提取字符串中的内容的详细步骤》:本文主要介绍Java中使用正则表达式提取字符串内容的方法,通过Pattern和Matcher类实现,涵盖编译正则、查找匹配、分组捕获、数字与邮箱提... 目录1. 基础流程2. 关键方法说明3. 常见场景示例场景1:提取所有数字场景2:提取邮箱地址4. 高级

C#高效实现Word文档内容查找与替换的6种方法

《C#高效实现Word文档内容查找与替换的6种方法》在日常文档处理工作中,尤其是面对大型Word文档时,手动查找、替换文本往往既耗时又容易出错,本文整理了C#查找与替换Word内容的6种方法,大家可以... 目录环境准备方法一:查找文本并替换为新文本方法二:使用正则表达式查找并替换文本方法三:将文本替换为图

Python中高级文本模式匹配与查找技术指南

《Python中高级文本模式匹配与查找技术指南》文本处理是编程世界的永恒主题,而模式匹配则是文本处理的基石,本文将深度剖析PythonCookbook中的核心匹配技术,并结合实际工程案例展示其应用,希... 目录引言一、基础工具:字符串方法与序列匹配二、正则表达式:模式匹配的瑞士军刀2.1 re模块核心AP

Python 字符串裁切与提取全面且实用的解决方案

《Python字符串裁切与提取全面且实用的解决方案》本文梳理了Python字符串处理方法,涵盖基础切片、split/partition分割、正则匹配及结构化数据解析(如BeautifulSoup、j... 目录python 字符串裁切与提取的完整指南 基础切片方法1. 使用切片操作符[start:end]2