您的位置:首页 > 其它

替换字符串空格

2016-05-17 17:31 281 查看
本算法通过从后遍历字符串实现O(n)的时间复杂度替换字符串中的空格。

void replaceSpace(char *str, int maxLength)
{
int length = strlen(str);
int spaceNum = 0;
for (int i = 0; i < length; i++)
{
if (str[i] == ' ')
{
spaceNum++;
}
}
int oldIndex = length;
int newIndex = length + 2 * spaceNum;
if (newIndex > maxLength)
{
return;
}
while (newIndex > oldIndex)
{
if (str[oldIndex] == ' ')
{
str[newIndex--] = '0';
str[newIndex--] = '2';
str[newIndex--] = '%';
oldIndex--;
}
else
{
str[newIndex--] = str[oldIndex--];
}
}
}


总结:合并两个数组(包括字符串)时,如果从前往后复制每个数字(或字符)需要重复移动数字(或字符)多次,那么可以考虑从后往前复制,这样就能减少复制的次数,从而提高效率。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: