一道C++练习题,替换一个字符串里所有实例
做了一道C++练习题,替换一个字符串里面的所有实例。
#include <iostream>
#include <string>
using namespace std; const int NOT_FOUND = -1;
int strFind(string str, string strSub);
string strRepIdx(string strDes, int idxStart, int idxEnd, string strRepDes);
string strRep(string strDes, string strRepSrc, string strRepDes); // Replace all instances of strRepSrc in strDes with strRepDes and return the string replaced;
string strRep(string strDes, string strRepSrc, string strRepDes)
{
int nIdxFound = strFind(strDes, strRepSrc);
if (NOT_FOUND == nIdxFound)
{
return strDes;
}
else
{
string strLeft = strDes.substr(nIdxFound+ strRepSrc.length(),strDes.length()-nIdxFound);
string strTemp = strRepIdx(strDes, nIdxFound, nIdxFound + strRepSrc.length()-1, strRepDes);
return strTemp.substr(0, nIdxFound + strRepDes.length()) + strRep(strLeft,strRepSrc,strRepDes); }
return strDes;
} // find index of substring strSub in string str;
// return:
// -1,for not found
// 0 or positive int, index of substring
int strFind(string str, string strSub)
{
int strLen = str.length();
int subStrLen = strSub.length();
if (strLen < subStrLen)
{
return NOT_FOUND;
}
else
{
for (int i = 0; i < strLen - subStrLen+1; i++)
{
if (str.substr(i, subStrLen) == strSub)
{
return i;
}
}
}
return NOT_FOUND;
} string strRepIdx(string strDes, int idxStart, int idxEnd, string strRepDes)
{
strDes = strDes.substr(0, idxStart) + strRepDes + strDes.substr(idxEnd+1, strDes.length());
return strDes;
} int main()
{
string str0 = "Hello World";
string subStr1 = "World";
string subStr2 = "l";
string subStrDes = "ii"; cout << "Origin String is " << str0 << endl;
cout << "Replace " << subStr1 << " with " << subStrDes << " is " << strRep(str0, subStr1, subStrDes) << endl;
string strRep2 = strRep(str0, subStr2, subStrDes);
cout << "Replace " << subStr2 << " with " << subStrDes << " is " << strRep2 << endl; return 0;
}
感觉基础的编码水平还基本停留在大一学C语言时候……┗|`O′|┛ 。
一道C++练习题,替换一个字符串里所有实例的更多相关文章
- 【JS新手教程】replace替换一个字符串中所有的某单词
JS中的replace方法可以替换一个字符串中的单词.语句的格式是: 需要改的字符串.replace(字符串或正则表达式,替换成的字符串) 如果第一个参数用字符串,默认是找到该字符串中的第一个匹配的字 ...
- awk如何替换一个字符串的第n个字符?
方法一: echo "abcdefg" | awk 'BEGIN{FS=OFS=""}$4="h"' // ""可 ...
- python-又来练习题--输出一个字符串中最长的子字符串及其长度
一.有个字符串 str= '$sd1#111$svda123!!!221&eSSDSyyyyyyDG^svda121^svda124^1111111111111' 包含特殊字符.数字和字母,输 ...
- java提取出一个字符串里面的Double类型数字
String str="hh\n1\n22\n798.809\n0.89\n"; String regex="\\d+(?:\\.\\d+)?" ...
- JavaScript 中 replace方法 替换所有字符串
需要替换一个字符串中所有的某个字符串 java中使用replaceAll()方法就可以了.但是JavaScript中没有replaceAll方法 但是可以通过以下方法实现: /** * 空格替换为下划 ...
- 【C语言】字符串替换空格:实现一个函数,把字符串里的空格替换成“%20”
//字符串替换空格:实现一个函数,把字符串里的空格替换成"%20" #include <stdio.h> #include <assert.h> void ...
- 【算法训练营day8】LeetCode344. 反转字符串 LeetCode541. 反转字符串II 剑指Offer05. 替换空格 LeetCode151. 翻转字符串里的单词 剑指Offer58-II. 左旋转字符串
[算法训练营day8]LeetCode344. 反转字符串 LeetCode541. 反转字符串II 剑指Offer05. 替换空格 LeetCode151. 翻转字符串里的单词 剑指Offer58- ...
- 剑指offer 1,输入一个字符串,将字符串的空格替换成%20
剑指offer 1,输入一个字符串,将字符串的空格替换成%20 function replaceSpace(str){ return str.replace(/\s/g,"% ...
- 在一个由 'L' , 'R' 和 'X' 三个字符组成的字符串(例如"RXXLRXRXL")中进行移动操作。一次移动操作指用一个"LX"替换一个"XL",或者用一个"XR"替换一个"RX"。现给定起始字符串start和结束字符串end,请编写代码,当且仅当存在一系列移动操作使得start可以转换成end时, 返回True。
在一个由 'L' , 'R' 和 'X' 三个字符组成的字符串(例如"RXXLRXRXL")中进行移动操作.一次移动操作指用一个"LX"替换一个"XL ...
随机推荐
- GO项目目录
|--bin |--pkg |--src 其中,bin存放编译后的可执行文件:pkg存放编译后的包文件:src存放项目源文件.一般,bin和pkg目录可以不创建,go命令会自动创建(如 go inst ...
- Struts 入门(一) 搭建Struts环境
eclipse中创建项目 搭建步骤: 1.创建web项目 2.下载导入相关jar包 3.创建并完善相关配置文件 4.创建(控制器)Action 并测试启动 1.文件--新建--动态web项目 给项目起 ...
- vue兄弟组件传值
vue中除了父子组件传值,父传子用props,子传父用$emit,有时候兄弟组件之间也需要传值 1. 先定义一个中间件,src下面新建self.js import Vue from 'vue'; le ...
- 日期选择时两个日期之间的动态控制--My97datepicker日期选择控件
实现效果:如果先选离店日期,再选入住日期的话,入住日期大于离店日期则离店日期+1天否则离店日期不变,先选入店再选离店离店,离店只能选之后的日期,且两个日期之间最多间隔88天 <div class ...
- response.setContentType()的String参数及对应类型(转)
response.setContentType(MIME)的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据. 例如web浏览器就是通过MI ...
- 把www.domain.com均衡到本机不同的端口 反向代理 隐藏端口 Nginx做非80端口转发 搭建nginx反向代理用做内网域名转发 location 规则
负载均衡-Nginx中文文档 http://www.nginx.cn/doc/example/loadbanlance.html 负载均衡 一个简单的负载均衡的示例,把www.domain.com均衡 ...
- Uncaught TypeError: Cannot set property 'value' of null
w拼写多一个空格导致. document.getElementById(winput_id).value = value; http://stackoverflow.com/questions/161 ...
- FW:主流RPC框架
主流RPC框架 2015年10月27日 zman RPC 介绍目前在互联网公司比较流行的开源的RPC框架. RPC框架比较 语言 协议 服务治理 社区 机构 Hessian 多语言 he ...
- Java实现断点续传
原理: 断点续传的关键是断点,所以在制定传输协议的时候要设计好,如上图,我自定义了一个交互协议,每次下载请求都会带上下载的起始点,这样就可以支持从断点下载了,其实HTTP里的断点续传也是这个原理,在H ...
- Spring Data 分页和排序 PagingAndSortingRepository的使用(九)
继承PagingAndSortingRepository 我们可以看到,BlogRepository定义了这样一个方法:Page<Blog> findByDeletedFalse(Page ...