所有代码均通过G++编译器测试,仅为练手纪录。
//面试题4:替换空格
//题目:请实现一个函数,把字符串中的每个空格替换成“%20”.
// 例如输入“We are happy.”,则输出“We%20are%20happy.”
//面试题4:替换空格
//题目:请实现一个函数,把字符串中的每个空格替换成“%20”.
// 例如输入“We are happy.”,则输出“We%20are%20happy.”
void Replace(string& strBuff,char cSrc,const string& strDst)
{
const char *pBuff = strBuff.c_str();
unsigned long nBuffSize = strBuff.size();
int nSrcCount = 0;
while (nBuffSize--)
{
if(cSrc == pBuff[nBuffSize])
{
++nSrcCount;
}
}
if(nSrcCount > 0)
{
nBuffSize = strBuff.size();
unsigned long nNewBuffSize = nBuffSize + (strDst.size()-1)*nSrcCount;
strBuff.resize(nNewBuffSize);
char *p = const_cast<char *>(strBuff.c_str());
const char *pDst = strDst.c_str();
unsigned long nDstSize = strDst.size();
--nNewBuffSize;
while(nBuffSize--)
{
if(cSrc == p[nBuffSize])
{
unsigned long nDstIndex = nDstSize - 1;
while(nDstIndex+1)
{
p[nNewBuffSize--] = pDst[nDstIndex--];
}
}
else
{
p[nNewBuffSize--] = p[nBuffSize];
}
}
}
}
void TestReplace()
{
string strBuff = " We are happy. ";
Replace(strBuff, ' ',"%20");
LogInfo("strBuff:%s",strBuff.c_str());
}
ZhaiPillary
2016-12-23