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] != '\0'){while (A[i] != B[0] && A[i] != '\0')   //复制直到同样遇到字符{strDest[i] = A[i++];}if (A[i] == '\0')sameNum = 0;else{while (A[i + j] == B[j] && A[i + j] != '\0') //推断同样字符能否够一直匹配到A结束j++;if (A[i + j] == '\0') //若能够。记录匹配个数,跳出循环{sameNum = j;while (A[i] != '\0'){strDest[i] = A[i];i++;}}else                      //否则,复制当前字符,前进一个位置。继续运行{strDest[i] = A[i++];j = 0;}}}for (j = sameNum; B[j] != '\0'; j++)strDest[i++] = B[j];strDest[i] = '\0';}void getNext(int next[], const char* t){int k = -1;next[0] = -1;int j = 0;int len = strlen(t);while (j < len - 1){if (k == -1 || t[j] == t[k]){if (t[++j] == t[++k])next[j] = next[k];elsenext[j] = k;}elsek = next[k];}}int KMP(const char* s,const char* t){int matchNum = 0;int len1 = strlen(s);int len2 = strlen(t);int *next = new int[len2];getNext(next, t);int i = 0, j = 0;while (i<len1){while (i<len1&&j<len2){if (j == -1 || s[i] == t[j]){i++;j++;}else{j = next[j];}}if (j==len2){//return i-j;i = i - j + 1;j = 0;matchNum++;}}return matchNum;}void test(){const char* A = "ranshao";const char* B = "shaoqiang";char* strDest = new char[strlen(A) + strlen(B) + 1];cout << A << endl;cout << B << endl;copyStr(A, B, strDest);cout << "result of copy is: " << strDest << endl;delete[] strDest;const char* s = "asderwsde3rsde";const char* t = "sde";cout << s << "  has  "<< KMP(s, t) <<" "<<t<<endl;}}
int _tmain(int argc, _TCHAR* argv[])
{MS100P_85::test();return 0;
}

执行结果:

版权声明:本文博客原创文章。博客,未经同意,不得转载。

转载于:https://www.cnblogs.com/mengfanrong/p/4634777.html

八十第五个冠军(复制和匹配的字符串)相关推荐

  1. 孤荷凌寒自学python第八十五天配置selenium并进行模拟浏览器操作1

    孤荷凌寒自学python第八十五天配置selenium并进行模拟浏览器操作1 (完整学习过程屏幕记录视频地址在文末) 要模拟进行浏览器操作,只用requests是不行的,因此今天了解到有专门的解决方案 ...

  2. DockOne微信分享(八十五):Docker存储方式选型建议

    本文讲的是DockOne微信分享(八十五):Docker存储方式选型建议[编者的话]Docker存储方式提供管理分层镜像和容器的可读写层的具体实现.最初Docker仅能在支持AUFS文件系统的Ubun ...

  3. 八十五、Python | Leetcode数据结构之图和动态规划算法系列

    @Author:Runsen @Date:2020/7/7 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

  4. JavaScript学习(八十五)—数据类型的转换

    JavaScript学习(八十五)-数据类型的转换 一.什么是数据类型的转换? 简单来说,就是把一种数据类型的变量转化为另外一种数据类型 二.转化为字符串类型 //把数字转化为字符串 变量.toStr ...

  5. 达芬奇密码 第八十五章

    达芬奇密码 第八十五章[@more@] 第八十五章 "你们寻找的圆球,本应在这位骑士的墓里." 圣殿教堂里的骑土石像无一例外地仰面躺着,头靠在呈长方形的石枕上.索菲只觉得一阵透心凉 ...

  6. 前端歌谣的刷题之路-第八十五题-列表动态渲染

    前言 我是歌谣 我有个兄弟 巅峰的时候排名c站总榜19 叫前端小歌谣 曾经我花了三年的时间创作了他 现在我要用五年的时间超越他 今天又是接近兄弟的一天人生难免坎坷 大不了从头再来 歌谣的意志是永恒的 ...

  7. 计算机专业必玩游戏,游戏推荐 篇三百八十五:非常好玩的机甲类游戏推荐

    游戏推荐 篇三百八十五:非常好玩的机甲类游戏推荐 2020-12-14 15:46:07 20点赞 77收藏 14评论 创作立场声明:哈喽,各位值友的小伙伴们大家好呀,我是你们的老朋友大白(●-●), ...

  8. SpringBoot 系列教程(八十五):Spring Boot使用MD5加盐验签Api接口之前后端分离架构设计

    加密算法参考: 浅谈常见的七种加密算法及实现 加密算法参考: 加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用 目的: 通过对API接口请求报文签名,后端进行验签处理, ...

  9. 真题详解(哈希表)-软件设计(八十五)

    真题详解(树的结点)-软件设计(八十四)https://blog.csdn.net/ke1ying/article/details/130869095 要求邮件加密方式传输,邮件最大附件内容可达500 ...

最新文章

  1. CentOs登陆输入root作为用户名
  2. (转)资料收集,新手必备的sql数据导入导出知识
  3. mysql配置文件检查方法
  4. Nginx之共享内存与slab机制
  5. 为什么我的C4C Service Request没办法Release到ERP?
  6. java三判式,Java编程设计模式,第 3 部分
  7. dbus PHP,安装dbus-python的简要教程
  8. 模式识别中的特征提取及其内在意义
  9. 关于LabVIEW视觉ROI的读取与存储
  10. kali怎么开启php服务器,kali开启端口、关闭防火墙方法
  11. 非递归方式对二叉树进行前序、中序、后序遍历(C++实现)
  12. 程序员日报周报月报 模板
  13. 网站漏洞扫描工具AWVS_v13下载和安装
  14. win10mysql服务器修改密码,Windows下mysql修改root密码的4种方法
  15. BDTC 2016 出品人阵容曝光!附首批邀请嘉宾名单
  16. 自部署IPA在线安装服务源码
  17. 服务器的ras性能指标,Memory RAS Configuration
  18. 集中派发福利:《神秘的程序员们》年度大抽奖
  19. 【cocos creater】6.仿《弓箭传说》- 控制主角移动(附源码)
  20. 会员管理小程序实战开发教程-会员信息删除

热门文章

  1. 产品经理之深度学习促进产品之分类(三)
  2. 如何监测mysql主从复制状态_如何实时检测mysql主从状态,并做邮件告警?
  3. 【java】java Integer 缓存 一定是 -128~127 吗
  4. 【kafka】Kafka ConsumerOffsetChecker 命令失效问题解决 卡死
  5. 【Flink】Flink 控制台能消费 但是 Flink 任务不能消费 内置topic 导致问题
  6. 95-866-040-源码-吞吐量-提升吞吐的利器 MicroBatch
  7. 【Elasticsearch】Elasticsearch如何实现 SQL语句中 Group By 和 Limit 的功能
  8. 【Flink】Flink 或者 Spark the client is stop
  9. 【杂项】2021年年度报告
  10. 【clickhouse】BAT 都在追捧的 ClickHouse ,到底有多快 笔记