程序员面试金典: 9.1数组与字符串 4字符串中空格全部替换为"%20"
2016-12-20 11:21
260 查看
#include <iostream> #include <stdio.h> #include <string> #include <vector> using namespace std; /* 问题:编写一个方法,将字符串中的空格全部替换为“%20”。 假定该字符串尾部留有足够的控件存放新增字符,并且知道字符串的真实长度 分析:先扫描字符串,计算出空格总数n,字符串长度L,由于一个空格和“%20”相差两个字符, 因此替换后的字符串总长度为=L + 2n 然后将原字符串依次从后向前拷贝至新子串对应位置 输入: chao ma yan ma 输出 chao%20ma%20yan%ma 关键: 1 先扫描字符串,计算出空格总数n,字符串长度L,由于一个空格和“%20”相差两个字符, 因此替换后的字符串总长度为=L + 2n 然后将原字符串依次从后向前拷贝至新子串对应位置 2 需要支持带空格的字符串,使用getline(cin , str) */ string stringReplace(string& str , const char findStr , const string& replaceStr) { int pos = 0; int iCount = 0; //如果找到该字符串 while( string::npos != str.find(findStr , pos)) { iCount++; pos = str.find(findStr , pos) + 1; } int totalLength = str.length() + 2 * iCount; int i = totalLength - 1; int j = str.length() - 1; vector<char> str2(totalLength , 'a'); for( ; j >= 0 ; ) { //如果不是待查找字符 if(str[j] != findStr) { //这边长度还没有开启 str2[i--] = str[j--]; } //如果是待查找字符,则令当前为“0” else { str2[i--] = '0'; str2[i--] = '2'; str2[i--] = '%'; j--; } } string sResult = ""; vector<char>::iterator it = str2.begin(); for( ; it != str2.end() ; it++ ) { sResult += *it; } return sResult; } int main(int argc, char* argv[]) { string str; //需要支持带空格的字符串 while( getline(cin , str)) { char findStr = ' '; string replaceStr = "%20"; string result = stringReplace(str , findStr , replaceStr); cout << result << endl; } system("pause"); return 0; }
相关文章推荐
- 程序员面试金典(3)字符串中空格替换为"%20"
- 把字符串中空格替换为"%20"
- 【C/C++】将字符串中间的空格替换为"%20"
- 把字符串中的空格替换为"%20"
- 把字符串中的空格替换为"%20"
- 9.1数组与字符串(三)——将字符串中的空格全部替换为“%20”
- 程序员面试金典第一章:数组与字符串(4) 空格替换
- 实现函数,用字符串"%20"替换空格
- 用"%20" 替换字符串中的空格
- 实现函数,用字符串&quot;%20&quot;替换空格
- 【剑指offer】将字符串中的空格替换成"%20"
- 实现一个函数,将字符串中的空格替换成"%20"
- 请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。 给定一个string
- 替换空格 合并数组字符串
- Offer题4 替换空格&常量字符串和字符串数组
- 解决从服务器获取的数组是 __NSCFConstantString以及""没有空格字符串的问题
- [剑指offer][面试题04]实现一个函数,将字符串中的空格替换为“ ”.例如输入“we are happy.”,输出"we are happy.".
- 字符串数组空格的替换
- 剑指offer中替换空格为"%20"
- Word或者Excel中怎么把 "空格" 替换成 "换行 "