给你两个字符串str1,str2,找出str2在str1中的位置

如题

题目参考链接

http://blog.csdn.net/hxz_qlh/article/details/14110221

代码来自非原创

 1 #include <iostream>
 2 #include <cstdio>
 3
 4 using namespace std;
 5
 6 char *strstring(char *ParentString,char *SubString)
 7 {
 8     char *pSubString,*pParentString;
 9     for(char *pTmp = ParentString; *pTmp !=‘\0‘ ; pTmp++)
10     {
11         pSubString = SubString;
12         pParentString = pTmp;
13         while(*pSubString != ‘\0‘ && *pSubString == *pParentString)
14         {
15             pSubString++;
16             pParentString++;
17         }
18         if(*pSubString == ‘\0‘)
19         {
20             return pTmp;
21         }
22     }
23     return NULL;
24 }
25
26 int main()
27 {
28     cout << "Hello world!" << endl;
29     char *ParentString = "I love TrendMicro!";
30     char *SubString = "Trend";
31     printf("%s\n",strstring(ParentString,SubString));
32     return 0;
33 }
时间: 2024-10-07 16:41:00

给你两个字符串str1,str2,找出str2在str1中的位置的相关文章

9.7数学与概率(三)——在二维平面上,有两个正方形,请找出一条直线,能够将这两个正方形对半分

/** * 功能:在二维平面上,有两个正方形,请找出一条直线,能够将这两个正方形对半分. * 假定正方形的上下两条边与x轴平行. */ /** * 考虑: * 线的准确含义,可能性有: * 1)由斜率和y轴截距确定: * 2)由这条边上的任意两点确定: * 3)线段,以正方形的边作为起点和终点. * * 假设:这条线的端点应该落在正方形的边上. * 思路:要将两个正方形对半分,这条线必须连接两个正方形的中心点. */ public class Square { //正方形的四条边 int lef

位运算 找出给定的数中其他数都是两个,有两个是一个的数

题目大意: 给定你n个数, 其中有n-2个数都是两两成对的,有两个是单独出现的,如n = 8, 2 3 2 5 3 6 4 6, 这时候4和5是单独的两个,所以答案就是4,5,其中n的范围是1e6. 思路: 之前做过找一个单独的数的题,那个题是用一个比较巧妙的方法来做的,不过这个也是一类经典问题,用到了强大的位运算,有了那个题的基础再来做这个题就简单了.(附:找一个的题目链接). 刚开始我是用了O(nlogn)的时间复杂度来做的,先排序,然后用类似找一个的方法找出第二个.我觉得对于1e6的数据量

9.5位操作(三)——给定一个正整数,找出与其二进制表示中1的个数相同,且大小最接近的那两个数

/** * 功能:给定一个正整数,找出与其二进制表示中1的个数相同,且大小最接近的那两个数. * (一个略大一个略小.) */ 三种方法: 方法一:蛮力法 方法二:位操作法 <span style="white-space:pre"> </span>/** * 方法:位操作法 * 思路:获取后一个较大的数 * 1)计算c0和c1.c1是拖尾1的个数,c0是紧邻拖尾1的作坊一连串0的个数. * 2)将最右边.非拖尾0变为1,其位置为p=c1+c0. * 3)将位p

测试题目:两个有序数组,找出最大的五个数字组成一个新的数组

注意点: 1.输入两行的方法 2.两行输入的数量和小于5的情况 1 //评测题目: 两个有序数组,找出最大的五个数字组成一个新的数组 2 #include <iostream> 3 #include <vector> 4 #include <cstring> 5 #include <bits/stdc++.h> 6 using namespace std; 7 8 vector<int> getTop5(vector<int>&

找出此产品描述中包含N个关键字的长度最短的子串

阿里巴巴笔试题:给定一段产品的英文描述,包含M个英文字母,每个英文单词以空格分隔,无其他标点符号:再给定N个英文关键词,请说明思路并变成实现方法. String extractSummary(String description , String[] keyWords) 目标:找出此产品描述中包含N个关键字的长度最短的子串(20分) W0 W1 W2 W3  Q0 W4 W5 Q1 W6 W7 W8 Q0 W9 Q1 P335 <编程之美>上的参考代码: int nTarget = N + 1

c语言:找出1到4000中,数字的各位数之和能被4整除的数有多少个?

找出1到4000中,数字的各位数之和能被4整除的数,如:745:7+4+5=16,16可以被4整除:28:2+8=10,10不能被4整除:745就是这样的特殊数字,而28不是,求:这样的数字共有多少个? 解: (1)对于4000,4+0+0+0=4,显然4000是满足条件的数字: (2)对于1到3999,我们把每个数字看成4位[][][][]的形式,第一位[]取0到3,后3位取[0][0][0]到[9][9][9],用sum表示4位数字的和: 2.1:若后3位为一个奇数,则第1位取1或3,必定可

找出N个数据中的最大的K个数据---堆排序

从N个数据中找出最大的K个数据,而且这里有一个限制:内存里存不下所有的N个数据,但是可以存下K个数据.这就让我们打消了用排序的方法来解的念头. 在这里我们使用堆排序来完成. 因为我们只能有K个数据那么大的空间,所以我们建一个K大的堆,将N的前K个数据插入到堆中,然后调整堆.(对于堆结构不了解的可以查看我微博  http://helloleex.blog.51cto.com/10728491/1768758) 对于最大的K个数据,我们要怎么找出来呢.我们首先要确定我们是要用大顶堆还是小顶堆.  用

c语言代码编程题汇总:找出三个数据中最大的数值

找出三个数据中最大的数值 程序代码如下: 1 /* 2 2017年3月9日12:04:37 3 功能:找出三个数据中最大的数值 4 */ 5 #include"stdio.h" 6 7 int fun(int,int,int); 8 9 int main() 10 { 11 int a ,b,c; 12 13 printf("please input three number: \n"); 14 15 scanf("%d %d %d",&

C语言 选择排序算法原理和实现 从数组中 找出最小的元素然后交换位置

#include <stdio.h> int main(void) { /* 选择排序算法 原理:从数组中 找出最小的元素然后交换位置: */ int a[10] = {9,5,10,7,2,3,1,6,8,4}; int i=0,j=0; int n = sizeof(a)/4; //外循环n-1轮 for(i=0;i<n-1;i++){ int pos = i;//始终指向最小的位置 for(j=i+1;j<n;j++){ if(a[j]<a[pos]){ pos = j

偶然看到的面试算法题_最短时间找出十包粉末中的两蓝粉末。

题目:有4个杯子,10包粉末,其中有2包溶于水变蓝,其余无色,粉末溶于水2min才能显现颜色.求找出两包蓝色粉末的最短时间.假设水和粉末用不完. 解:以下给出四种解法,标记10包粉末为(1,2 ... ) 杯子为[1,2,3,4]首先我想会不会是有某种算法,dp 二分..@[email protected]..没有,懵懵的. 法一:这是我最初想到的比较傻的方法 第一趟:[12,34,56,78] 每个杯子分别放两包加水融化,剩下两包不管.可能的情况: (1)0个杯子变色,说明剩下两包就是蓝粉末