一、需求描写叙述

给定一个长字符串和一个短字符串。编敲代码推断短字符串中的全部字符是否都在长字符串中。假设是,则长字符串包括短字符串;反之,不包括。

为了尽量包括大多数情况,字符串中能够包括大写和小写英文字母、数字和各种标点符号。而且区分大写和小写字母。

以下举几个样例予以说明:

1.假设长字符串是“ABCDE”,短字符串是“ADC”,那么短字符串中的全部字符都在长字符串中。即长字符串包括了短字符串。

2.假设长字符串是“ABCDE”,短字符串是“ADCF”。那么短字符串中不是全部字符都在长字符串中,即长字符串不包括了短字符串。

3.假设长字符串是“ABCDE”,短字符串是“AAB”,那么短字符串中的全部字符都在长字符串中。即长字符串包括了短字符串。

二、算法设计

我们都知道。就像人体是由一个个的细胞组成一样,一个字符串是由一个个的字符组成。假设组成某个字符串的全部字符都在还有一个字符串中。那么这个字符串就被还有一个字符串包括。

因此。我们能够考虑先将两个字符串中的全部字符都找出来,再推断较短的字符串中的全部字符是否都出如今了较长的字符串中。假设是,那么两个字符串是包括与被包括的关系。假设不是,那么两个字符串则“形同陌路”。

程序的整体流程如图1所看到的。

图1 程序的整体流程

三、特殊流程考虑

在编敲代码的过程中,我们要对输入的两个字符串的长度及格式多做考虑,如:

1.假设输入失误,导致短字符串的长度大于了长字符串。那么程序直接返回,不进行兴许处理。

2.不同意在输入字符串的中间出现空格,假设出现了,仅仅能把空格前面的内容作为输入的字符串。

3.输入字符串能够包括字母(区分大写和小写)、数字、标点符号等字符。

4.为了方便程序处理,设定较长的字符串最长为500个字节,较短的字符串最长为100个字节。

四、程序代码

五、程序測试

我们将编写好的程序“StringContains.c”上传到Linux机器,并使用“gcc -g -o StringContainsStringContains.c”命令对该程序进行编译,生成“StringContains”文件。以下对程序进行具体的測试。

1.输入较长字符串为“ABCDF”、较短字符串为“AF”时,程序执行情况例如以下:

LongerStr=123

Please input the shorter string:

123 45

ShorterStr=123

123 contains 123!

可见,对于上面考虑到的几种特殊情况,程序均能做出正确的处理。

六、需求扩展

基于本文中的需求和程序,我们可考虑对需求进行以下扩展:

1.限制输入的字符串中仅仅能包括字母。假设包括了其他字符,则直接退出而不进行处理。

2.假设较短的字符串中的全部字符尽管都在较长的字符串中,但某个字符在较短的字符串中出现的次数大于了在较长的字符串中出现的次数,那么就觉得较长的字符串不包括较短的字符串。

【字符串处理算法】字符串包括的算法设计及C代码实现的更多相关文章

  1. KMP替代算法——字符串Hash

    很久以前写的... 今天来谈谈一种用来替代KMP算法的奇葩算法--字符串Hash 例题:给你两个字符串p和s,求出p在s中出现的次数.(字符串长度小于等于1000000) 字符串的Hash 根据字面意 ...

  2. 算法练习LeetCode初级算法之字符串

    反转字符串 我的解法比较low,利用集合的工具类Collections.reverse反转,用时过长 class Solution { public void reverseString(char[] ...

  3. KMP算法字符串查找子串

    题目: 经典的KMP算法 分析: 和KMP算法对应的是BF算法,其中BF算法时间复杂度,最坏情况下可以达到O(n*m),而KMP算法的时间复杂度是O(n + m),所以,KMP算法效率高很多. 但是K ...

  4. 字符串匹配算法系列一:KMP算法原理

    本文主要参考了https://mp.weixin.qq.com/s/rbaPmBejID8-rYui35Snrg的表述,加上部分自己的理解 学习任何算法都要了解该算法解决什么问题?我们看看KMP算法主 ...

  5. 【LeetCode算法】LeetCode初级算法——字符串

      在LeetCode初级算法的字符串专题中,共给出了九道题目,分别为:反转字符串,整数反转,字符串中的第一个唯一字符,有效的字母异位词,验证回文字符串,字符串转换整数,实现strStr(),报数,最 ...

  6. LeetCode初级算法--字符串01:反转字符串

    LeetCode初级算法--字符串01:反转字符串 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.ne ...

  7. LeetCode初级算法--字符串02:字符串中的第一个唯一字符

    LeetCode初级算法--字符串02:字符串中的第一个唯一字符 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog. ...

  8. 【算法训练营day8】LeetCode344. 反转字符串 LeetCode541. 反转字符串II 剑指Offer05. 替换空格 LeetCode151. 翻转字符串里的单词 剑指Offer58-II. 左旋转字符串

    [算法训练营day8]LeetCode344. 反转字符串 LeetCode541. 反转字符串II 剑指Offer05. 替换空格 LeetCode151. 翻转字符串里的单词 剑指Offer58- ...

  9. Leetcode初级算法(字符串篇)

    目录 反转字符串 颠倒整数 字符串中的第一个唯一字符 有效的字母异位词 验证回文字符串 实现strStr() 数数并说 最长公共前缀 字符串转整数(atoi) 反转字符串 和vector同样的进行sw ...

随机推荐

  1. codechef MAY18 div2 部分题解

    T1 https://www.codechef.com/MAY18B/problems/RD19 刚开始zz了,其实很简单. 删除一个数不会使gcd变小,于是就只有0/1两种情况 T2 https:/ ...

  2. css中background-origin属性的使用

    background-origin用来规定元素背景图像的相对定位位置,它有三个属性值: 1.border-box border-box表示元素背景图像相对于border区域开始定位. 代码如下: &l ...

  3. Md2All,把图片轻松上传到云图床,自动生成Markdown

    内容目录 关于Md2AllMd2All的云图床效果直接把图片拖到编辑框截图,直接复制粘贴点图片图标选择图片注册七牛云帐号新建七牛云存储空间设置云图床密钥AK和SKBucketName和BucketDo ...

  4. Android开发圆形ImageView实现

    效果图如下 1.自定义属性,在value文件夹下新建attrs文件,声明如下属性 <declare-styleable name="CircleImageView"> ...

  5. VMWare虚拟机移动

    1.  背景: 虚拟机:VM3 原安装路径:C:\Users\Administrator\Documents\Virtual Machines 移动到目标路径:D:\Virtual Machines ...

  6. 调试程序时找不到DLL的解决办法

    最近调试程序的经常弹出找不到DLL.只好一个个把DLL拷贝到程序目录下(我是拷贝到源文件目录,也有人说是Debug目录). 其实可以这么设置: 项目属性->配置属性->调试->工作目 ...

  7. 5、scala数组转换

    1.使用yield和函数式编程转换数组 2.算法案例:移除第一个负数之后的所有负数 1.使用yield和函数式编程转换数组 使用yield进行数组转换 结合if守卫,仅转换需要转换的元素 使用函数式编 ...

  8. Java中StringTokenizer类的使用

    StringTokenizer是一个用来分隔String的应用类,相当于VB的split函数. 1.构造函数 public StringTokenizer(String str) public Str ...

  9. 解决postman https请求无返回数据的问题

    1.点击右上角的扳手图标 2.点击settings 3.点击general 4.把 ssl certificate verification这项点击关闭

  10. 部署国密SSL证书,如何兼容国际主流浏览器?

    国密算法在主流操作系统.浏览器等客户端中,还没有实现广泛兼容.因此,在面向开放互联网的产品应用中,国密算法无法得到广泛应用.比如,在SSL证书应用领域,由于国际主流浏览器不信任国密算法,如果服务器部署 ...