【字符串处理算法】字符串包括的算法设计及C代码实现
一、需求描写叙述
给定一个长字符串和一个短字符串。编敲代码推断短字符串中的全部字符是否都在长字符串中。假设是,则长字符串包括短字符串;反之,不包括。
为了尽量包括大多数情况,字符串中能够包括大写和小写英文字母、数字和各种标点符号。而且区分大写和小写字母。
以下举几个样例予以说明:
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代码实现的更多相关文章
- KMP替代算法——字符串Hash
很久以前写的... 今天来谈谈一种用来替代KMP算法的奇葩算法--字符串Hash 例题:给你两个字符串p和s,求出p在s中出现的次数.(字符串长度小于等于1000000) 字符串的Hash 根据字面意 ...
- 算法练习LeetCode初级算法之字符串
反转字符串 我的解法比较low,利用集合的工具类Collections.reverse反转,用时过长 class Solution { public void reverseString(char[] ...
- KMP算法字符串查找子串
题目: 经典的KMP算法 分析: 和KMP算法对应的是BF算法,其中BF算法时间复杂度,最坏情况下可以达到O(n*m),而KMP算法的时间复杂度是O(n + m),所以,KMP算法效率高很多. 但是K ...
- 字符串匹配算法系列一:KMP算法原理
本文主要参考了https://mp.weixin.qq.com/s/rbaPmBejID8-rYui35Snrg的表述,加上部分自己的理解 学习任何算法都要了解该算法解决什么问题?我们看看KMP算法主 ...
- 【LeetCode算法】LeetCode初级算法——字符串
在LeetCode初级算法的字符串专题中,共给出了九道题目,分别为:反转字符串,整数反转,字符串中的第一个唯一字符,有效的字母异位词,验证回文字符串,字符串转换整数,实现strStr(),报数,最 ...
- LeetCode初级算法--字符串01:反转字符串
LeetCode初级算法--字符串01:反转字符串 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.ne ...
- LeetCode初级算法--字符串02:字符串中的第一个唯一字符
LeetCode初级算法--字符串02:字符串中的第一个唯一字符 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog. ...
- 【算法训练营day8】LeetCode344. 反转字符串 LeetCode541. 反转字符串II 剑指Offer05. 替换空格 LeetCode151. 翻转字符串里的单词 剑指Offer58-II. 左旋转字符串
[算法训练营day8]LeetCode344. 反转字符串 LeetCode541. 反转字符串II 剑指Offer05. 替换空格 LeetCode151. 翻转字符串里的单词 剑指Offer58- ...
- Leetcode初级算法(字符串篇)
目录 反转字符串 颠倒整数 字符串中的第一个唯一字符 有效的字母异位词 验证回文字符串 实现strStr() 数数并说 最长公共前缀 字符串转整数(atoi) 反转字符串 和vector同样的进行sw ...
随机推荐
- python 12:list(range(...)) (转化参数列表)
numbers = list(range(1,11)) #把范围产生的数字串转化为列表储存 print(numbers) 运行结果应该是: [1,2,3,4,5,6,7,8,9,10]
- MySQL实现递归查询
DROP FUNCTION IF EXISTS queryChildrenCaseInfo;CREATE FUNCTION queryChildrenCaseInfo(cId INT)RETURNS ...
- C#Cookie操作类,删除Cookie,给Cookie赋值
using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security ...
- JS排序之选择排序
遍历这个数组,先确定索引为0的数字为暂时最小数, 在剩下的数据中,以第一个为标杆,和剩下的数依次进行比较,如果标杆大于某数,则进行索引交换,继续比较,则a[i]=min; 最后让a[i]与索引为0的数 ...
- (转)vuex2.0 基本使用(1) --- state
Vuex 的核心是 store, 它是一个通过 Vuex.Store 构造函数生成的对象.为什么它会是核心呢?因为我们调用这个构造函数创建store 对象的时候,给它传递参数中包装了state, mu ...
- HTML 5概述
HTML语言是一种简易的文件交换标准,用于物理的文件结构,它旨在定义文件内的对象和描述文件的逻辑结构,而并不定义文件的显示.由于HTML所描述的文件具有极高的适应性,所以特别适合于WWW的出版环境. ...
- python爬虫:爬取百度云盘资料,保存下载地址、链接标题、链接详情
在网上看到的教程,但是我嫌弃那个教程写的乱(虽然最后显示我也没高明多少,哈哈),就随手写了一个 主要是嫌弃盘搜那些恶心的广告,这样直接下载下来,眼睛清爽多了. 用pyinstall 打包成EXE文件, ...
- css属性代码大全总结(一)
一 CSS文字属性: color : #999999; /*文字颜色*/ font-family : 宋体,sans-serif; /*文字字体*/ font-size : 9pt; /*文字大小*/ ...
- 【sqli-labs】 less30 GET- Blind -Impidence mismatch -Having a WAF in front of web application (GET型基于盲注的带有WAF注入)
这次是双引号的,WAF绕过方法不变 http://192.168.136.128/sqli-labs-master/Less-30/login.php?id=1&id=2" and ...
- MVC 运行视图出错
IIS服务器web核心没有安装造成的