85.又见字符串问题
1.给出一个函数来复制两个字符串A 和B。
串A 经过几个字节和字符串B 重叠的前几个字节。
2.已知一个字符串,比方asderwsde,寻找当中的一个子字符串比方sde 的个数,假设没有返回0。有的话返回子字符串的个数。
思路:
1.遍历字符串A中的字符,和B中的第一个字符比較。若不同样则拷贝到目的字符串strDest中,若同样则有两种可能。一种是到达了AB重合部分的起始处,一种是恰巧同样,须要做出推断。採用依次比較的方法。从此处遍历到A字符串结尾处。若一直同样则说明是第一种情况,通过sameNum记录重合部分的个数。若在到达A字符串结尾之前出现了不同样的情况。说明是另外一种情况,把同样部分的字符拷贝到strDest中,并从下一个字符处继续运行该算法循环,详细实现參考代码。
2.基于KMP字符串匹配算法,通过matchNum记录匹配次数,每次匹配成功后。matchNum++,并从匹配起始位置的下一个位置開始又一次运行匹配算法,直到源字符串结束。
#include "stdafx.h" #include<iostream> using namespace std; namespace MS100P_85 { void copyStr(const char* A, const char* B, char* strDest) { int i = 0; int j = 0; int sameNum = 0; //A尾部和B头部匹配上的字符个数 while (A[i] != '