题目:原地实现字符串中的每个空格替换成"%20",例如输入"We are happy", 输出"We%20are%20happy"
被替换的字符串当然不仅仅是空格,上面只是个例子
这是道很好的题目,也是我进百度面试时的一道题,题目不难,但是问题得考虑全面
#include <iostream>
#include <vector>
#include <cassert>
using namespace std;
int findNumberFirst(const char *str, const char *dest, vector<int>& pvec)
{
if (str == NULL || dest == NULL)
return 0;
int pos = 0;
int lenStr = strlen(str);
int lenDest = strlen(dest);
if (lenStr < lenDest)
return 0;
int count = 0;
while (pos <= lenStr - lenDest)
{
if (strncmp(str + pos, dest, strlen(dest)) == 0)
{
pvec.push_back(pos);
pos += lenDest;
count++;
}
else
{
pos++;
}
}
return count;
}
int findNumberLast(const char *str, const char *dest, vector<int> &pvec)
{
if (str == NULL || dest == NULL)
return 0;
int strLen = strlen(str);
int destLen = strlen(dest);
if (strLen < destLen)
return 0;
int pos = 0;
while (pos <=

一道面试题,要求原地将字符串中的每个空格替换为"%20",例如"We are happy"变为"We%20are%20happy"。此题考察边界条件处理,例如字符串长度变化对拷贝的影响。在从后往前或从前往后替换时,不同的count值会产生不同拷贝行为。
最低0.47元/天 解锁文章
3199

被折叠的 条评论
为什么被折叠?



