【字符串处理算法】将输入字符串中的各个单词反序的算法设计及C代码实现
来源:互联网 发布:除湿袋真的有用吗 知乎 编辑:程序博客网 时间:2024/06/05 00:06
一、需求描述
输入一个字符串,编写程序将该字符串中的各个单词反序拼装并输出。例如,如果输入的字符串是“Hello, how do you do”,那么输出的字符串为“do you do how Hello,”。注意保留各个单词之间的空格及相应的标点符号。
二、算法设计
通过观察示例字符串(即“Hello, how do you do”),我们可以看到该字符串中各个单词与空格之间的关系为:单词总数=空格总数+1。也就是说,示例字符串中的空格总数为4,单词个数为5(即“Hello,”、“how”、“do”、“you”、“do”)。
因此,我们可以考虑先找出输入字符串中的空格总数,再根据空格找出各个单词,然后将这些单词反序拼装起来。
程序的总体流程如图1所示。
图1 程序的总体流程
三、特殊流程考虑
在编写程序的过程中,我们要对输入字符串的格式多做考虑,如:
1.输入字符串的开头几个字符为空格,即形如“ Hello,how do you do”,我们需要先将开头的几个空格去掉,再进行后续处理。
2.输入字符串的结尾几个字符为空格,即形如“Hello, how do you do ”,我们需要先将结尾的几个空格去掉,再进行后续处理。
3.输入字符串的中间几个字符为连续的空格,即形如“Hello, how do youdo”,我们需要先将连续的空格合并为一个空格,再进行后续处理。
4.只要输入字符串中的两个单词之间出现了空格,我们都把它们当作两个不同的单词,即使这两个单词没有实际的意思,即形如“Hello, how do y ou do”,其中的“y”和“ou”虽然要合并在一起才有意义,但我们仍然按照两个不同的单词进行处理。
四、程序代码
五、程序测试
我们将编写好的程序“ReverseTheString.c”上传到Linux机器,并使用“gcc -g -o ReverseTheStringReverseTheString.c”命令对该程序进行编译,生成“ReverseTheString”文件。下面对程序进行详细的测试。
1.输入字符串为“Hello, how do you do”时,程序运行情况如下:
Please input the string:
Hello, how do you do
TestStr=Hello, how do you do
ResultStr=do you do how Hello,
2.输入字符串为“ Hello, how do you do”(注意,前面有两个空格)时,程序运行情况如下:
Please input the string:
Hello, how do you do
TestStr= Hello, how doyou do
ResultStr=do you do how Hello,
3.输入字符串为“Hello, how do you do ”(注意,后面有两个空格)时,程序运行情况如下:
Please input the string:
Hello, how do you do
TestStr=Hello, how do you do
ResultStr=do you do how Hello,
4.输入字符串为“Hello, how do you do”(注意,中间有连续的空格)时,程序运行情况如下:
Please input the string:
Hello, how do you do
TestStr=Hello, howdo you do
ResultStr=do you do how Hello,
5.输入字符串为“Hello, ho w do yo u do”(注意,将几个完整的单词用空格分开)时,程序运行情况如下:
Please input the string:
Hello, ho w do yo u do
TestStr=Hello, ho w do yo u do
ResultStr=do u yo do w ho Hello,
可见,对于上面考虑到的几种特殊情况,程序均能做出正确的处理。
六、需求扩展
基于本文中的需求和程序,我们可考虑对需求进行以下扩展:
1.将反序之后的字符串的首字母大小,并将反序之前的首字母从大写变为小写,即将“Hello, how do you do”转换为“Do you do how hello,”。
2.不改变原字符串中的最后的标点符号的位置,即将“Hello, how do you do!”转换为“do you do how Hello,!”。
3.将原字符串中的标点符号去掉,即将“Hello, how do you do!”转换为“do you do how Hello”。
- 【字符串处理算法】将输入字符串中的各个单词反序的算法设计及C代码实现
- 【字符串处理算法】字符串包含的算法设计及C代码实现
- 【字符串处理算法】字符串转换为整数的算法设计及C代码实现
- 【字符串处理算法】删除特定的字符的算法设计及C代码实现
- 【字符串处理算法】回文判断的算法设计及C代码实现
- 【字符串处理算法】最长连续字符及其出现次数的算法设计及C代码实现
- 【字符串处理算法】获取最长公共子串的算法设计及C代码实现
- 一个将字符串中的单词倒序输出的算法
- 面试题:编程实现将字符串的各个单词翻转
- 字符串中的单词提取算法
- (练手备忘)汇编实现将输入的字符串中的空格去掉后反序输出
- 【算法与数据结构】将字符串中最长的单词输出
- 输入一个字符串,将字符串中的单词逆序输出
- [ C++ ] [ 算法 ] [ 字符串处理 ] 以单词为单位将字符串倒序
- 将源目录中的文件按照前缀分发到不同目录中的算法设计及C代码实现
- 算法:反序输出字符串
- 设计一个程序,从键盘上输入若干字符串,利用算法库中的查找函数对给定的字符串进行查找,将查找后的结果输出
- KMP算法实现字符串的模式匹配完整C代码
- iOS 自定义 中间带突起圆形的tabbar
- Android学习笔记(五):Activity和main.xml文件
- 此证书的签发者无效 问题解决
- Android Bundle类
- Android解析编译之后的所有文件(so,dex,xml,arsc)格式
- 【字符串处理算法】将输入字符串中的各个单词反序的算法设计及C代码实现
- PHP配置文件详解php.ini
- 顺序队列的java实现
- 算法——最长递增子序列(LIS)
- AsyncTask+GridView+BaseAdapter实现解析网络数据,图文混排。HttpUtils,JsonUtils等
- 循环队列的java实现
- PAT 1041
- 【bzoj2190】【SDOI2008】仪仗队(数论)
- 链表队列的java实现