实现一个时间复杂度为n的算法,将一个字符串中的所有*提前:he*llo wor*l*d => ***hello world
int move_stars_to_front(char *buffer)
{
if (NULL == buffer)
{
return 0;
}
int i = strlen(buffer) - 1;
for(int j = strlen(buffer)-1;j >= 0; j--)
{
if (buffer[j] != '*')
{
buffer[i] = buffer[j];
i--;
}
}
for(; i>=0; i--)
{
buffer[i] = '*';
}
return 1;
}

本文介绍了一种简单有效的时间复杂度为O(n)的算法,该算法可以将输入字符串中的所有星号(*)移动到字符串的开头位置。通过两次遍历的方式实现了这一目标:首先从后向前遍历并将非星号字符移动到合适的位置,然后再从前向后填充星号。
394

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



