给定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中出现的位置相关推荐

  1. 2021-11-25:给定两个字符串s1和s2,返回在s1中有多少个子串等于s2。来自美团。

    2021-11-25:给定两个字符串s1和s2,返回在s1中有多少个子串等于s2.来自美团. 答案2021-11-25: 改写kmp算法. next数组多求一位. 比如:str2 = aaaa, 那么 ...

  2. 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。

    给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 不能直接将输入的字符串转换为整数形式. 思路:将字符串从最小位进行相加,最后形成的字符串倒置 class Solution {pu ...

  3. 给定两个字符串,确定其中一个字符串的字符重新排列后,能否变成另一个字符串...

    1 /* 2 * 给定两个字符串,确定其中一个字符串的字符重新排列后,能否变成另一个字符串,其实也就是变位词问题 3 * 比如说 a='abc' b='acb'是可以通过a变成b的 4 * 思路; 5 ...

  4. 随笔-给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和

    题目:给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 注意: num1 和num2 的长度都小于 5100. num1 和num2 都只包含数字 0-9. num1 和num2 ...

  5. LeetCode||有效的字母异位词(排列)--给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词

    原题链接:https://leetcode-cn.com/problems/valid-anagram 题目描述: 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 示 ...

  6. 算法019:字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。

    题目:字符串轮转.给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串).示例1:输入:s1 = "waterb ...

  7. 给定两个字符串 s 和 t,它们只包含小写字母。 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。...

    给定两个字符串 s 和 t,它们只包含小写字母.字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母.请找出在 t 中被添加的字母. 示例: 输入: s = "abcd" ...

  8. 找不同(给定两个字符串 s 和 t,它们只包含小写字母。 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。)

    给定两个字符串 s 和 t,它们只包含小写字母. 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母. 请找出在 t 中被添加的字母. 示例: 输入: s = "abcd&quo ...

  9. JAVA算法:给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合(JAVA)

    JAVA算法:给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合(JAVA) 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合.. 当 n = 4 ...

最新文章

  1. 你为什么应该经常访问招聘网站?招聘网站至少有4个方面的价值!
  2. 【怎样写代码】工厂三兄弟之抽象工厂模式(四):抽象工厂模式
  3. 支付宝支付 第十二集:狂神、飞哥支付宝支付配置代码(免费资源,拿走不谢)
  4. sharepoint的入门知识
  5. 探秘Tomcat(一)——Myeclipse中导入Tomcat源码
  6. python图片解析库_python用来获得图片exif信息的库实例分析
  7. 烽火MAS短信服务器配置相关
  8. 搭乘百度语音识别技术,录音啦识别率最高可达95%
  9. 双蓝牙(HC-05、HC-06)AT指令配对教程
  10. [渝粤教育] 天津科技大学 人工智能导论 参考 资料
  11. eclipse打断点的调试
  12. Kali字典正确使用姿势
  13. 你真的了解“药品追溯码”吗?
  14. 对List进行多维度排序
  15. 牛逼的在线书籍制作.
  16. 聊聊vscode配置settings.json知其所以然(附大量配置)
  17. 69IT论坛-69It.com
  18. debian查看linux语言环境,如何在Debian中安装桌面和中文环境
  19. vue 使用百度地图api_使用百度地图api来实现ip高精度定位
  20. 视觉机器学习20讲-MATLAB源码示例(3)-回归学习算法

热门文章

  1. 网上副业靠谱吗?有哪些靠谱的网上副业可以做?
  2. JUnit4和JUnit5的主要区别
  3. Windows11 的体验
  4. 安装WinPython
  5. 实战-Android开机进入Launcher前黑屏问题
  6. vue3.2 setup语法糖,你值得拥有
  7. 终极方法, 解决Duplicate class 开头的报错内容全过程详解 - Duplicate class com.github.promeg.tinypinyin
  8. BugKu:1和0的故事
  9. 高老师的架构设计_隽语集(BB_0901)
  10. 模拟器安装应用:INSTALL_FALLED_INTERNAL_ERROR