博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2013 华为校招机试题
阅读量:6218 次
发布时间:2019-06-21

本文共 1739 字,大约阅读时间需要 5 分钟。

 

第一题

删除字符串中所有给定的子串(40分)

问题描述:
在给定字符串中查找所有特定子串并删除,如果没有找到相应子串,则不作任何操作。
要求实现函数:
int delete_sub_str(const char *str, const char *sub_str, char *result_str)
【输入】 str:输入的被操作字符串,sub_str:需要查找并删除的特定子字符串
【输出】 result_str:在str字符串中删除所有sub_str子字符串后的结果
【返回】 删除的子字符串的个数
注:
I、子串匹配只考虑最左匹配情况,即只需要从左到右进行字串匹配的情况。比如:
在字符串"abababab"中,采用最左匹配子串"aba",可以匹配2个"aba"字串。如果
匹配出从左到右位置2开始的"aba",则不是最左匹配,且只能匹配出1个"aba"字串。

II、输入字符串不会超过100 Bytes,请不用考虑超长字符串的情况。

示例
输入:str = "abcde123abcd123"
sub_str = "123"
输出:result_str = "abcdeabcd"
返回:2
输入:str = "abcde123abcd123"
sub_str = "1234"
输出:result_str = "abcde123abcd123"
返回:0

方法解析:C语言忘了差不多了,用了c++的string类型的substr()和erase()函数,还是比较简单的,代码如下:

1 #include "stdafx.h" 2 #include 
3 #include
4 using namespace std; 5 int delete_sub_str(const char *str, const char *sub_str,char *result_str) 6 { 7 string s_str = str; 8 string s_sub_str = sub_str; 9 int len=s_sub_str.size();10 int l = s_str.size();11 int num = 0;12 if (l > 100) //输入字符串长度超过10013 {14 cout << "ERROR" << endl;15 return -1;16 }17 if (len > l) //子串长度大于所给字符串18 {19 cout << "ERROR" << endl;20 return -1;21 }22 for (int i = 0; i < s_str.size() - len+1; i++)23 {24 if (s_str.substr(i, len) == s_sub_str) //与子字符串比较25 {26 s_str.erase(i, len); //从下标i开始,删除len个字符27 result_str=(char *)s_str.c_str();28 num++;29 30 }31 }32 cout << result_str << endl;33 return num;34 }35 int _tmain(int argc, _TCHAR* argv[])36 {37 char s1[] = "abcde123abcd123";38 char s2[] = "123";39 char *s=s1;40 int n = delete_sub_str(s1, s2,s);41 cout << n << endl;42 return 0;43 }

 

转载地址:http://zzlja.baihongyu.com/

你可能感兴趣的文章
干货!各种常见布局实现+知名网站实例分析
查看>>
容器服务kubernetes federation v2实践:多集群流量调度
查看>>
小程序中h5页面onShow实现及跨页面通信方案
查看>>
CryptoJS base64使用方法
查看>>
利用python批量修改MySQL表结构
查看>>
Metasploit 渗透测试手册第三版 第一章 Metasploit快速入门(翻译)
查看>>
021-cdh6.2+kylin2.6.2
查看>>
Linux - 进程
查看>>
从DevOps到ContainerOps
查看>>
版本控制:Git、Github 和 SVN的使用
查看>>
可变参数范例
查看>>
内核必须懂(三): 重编Ubuntu18.04LTS内核4.15.0
查看>>
遍历对象实例的属性和方法
查看>>
React组件
查看>>
论战,交易挖矿模式,能走多远?
查看>>
Vue中axios的封装
查看>>
实现一个简单版本的Vue及源码解析(一)
查看>>
GCD(二) dispatch_barrier
查看>>
Android 复杂的列表视图新写法 MultiType (v3.1.0 修订版)
查看>>
【前端记-1】你不知道的前端缓存
查看>>