今天,我们用双指针来去除字符串中的空格
字符串本质是一个字符类型的数组,所以双指针就是它的可移动的下标
思路分析
(视频讲解,可以去B站、Douyin找我哦!)
我们定义一个快指针(fast)和一个慢指针(slow),其实也就是两个代表下标的变量
先让他俩的值都为0
然后进入循环
然后判断slow对应的值是否为空
如果不为空-->slow和fast同时加1
如果为空 -->slow 不变,判断fast对应的值是否为空
如果为空,fast加1;
如果不为空,那就把fast对应的字符赋值到slow对应的地方,并把fast对应的地方替换成空格
然后,fast和slow都加1
当快指针fast走到头,循环结束
完整代码
#include<stdio.h>
#include<string.h>
void del_space(char s[])
{
int slow = 0, fast = 0, len = strlen(s);
while (fast != len + 1)
{
if (s[slow] != ' ') {
slow++; fast++;
}
else {
if (s[fast] == ' ') {
fast++;
}
else {
s[slow] = s[fast];
s[fast] = ' ';
slow++; fast++;
}
}
}
s[slow] = '\0';
}
int main()
{
char s[100];
gets(s);
del_space(s);
puts(s);
return 0;
}