题目:
请实现一个函数,把字符串中的每个空格替换成“%20"。例如输入"We are happy", 则输出"We%20are%20happy"。
代码实现:
void ReplaceBlankWithSpecialChar(char* pData, int totalCount)
{
if (nullptr == pData || totalCount < 1) return;
int useCount = 0; // 已使用数量
int blankCount = 0; // 空格数量
for (int idx = 0; idx < totalCount; ++idx)
{
if (pData[idx] == '\0') break;
if (pData[idx] == ' ') ++blankCount;
++useCount;
}
if (0 == blankCount) return; // 无空格
if (totalCount - (useCount + 1/*加上/0*/) < blankCount * 2) return; // 没有多余空间容纳%20
char* pFrontData = pData + useCount;
char* pBackData = pFrontData + blankCount * 2;
while (pBackData != pFrontData)
{
while (*pFrontData != ' ')
{
*pBackData = *pFrontData;
--pBackData;
--pFrontData;
}
--pFrontData;
*pBackData-- = '0';
*pBackData-- = '2';
*pBackData-- = '%';
}
}