gpt4 book ai didi

c - 就地从字符串中去除空格?

转载 作者:太空狗 更新时间:2023-10-29 16:57:59 24 4
gpt4 key购买 nike

我在“面试问题列表”中看到了这一点。让我想知道。

不一定限于空格,当然,很容易概括为“就地从字符串中删除某些特定字符”。

我的解决方案是:

void stripChar(char *str, char c = ' ') {
int x = 0;
for (int i=0;i<strlen(str);i++) {
str[i-x]=str[i];
if (str[i]==c) x++;
}
str[strlen(str)-x] = '\0';
}

我怀疑是否有更高效的解决方案,但是否有更优雅的解决方案?

编辑:完全忘了我把 strlen 放在那里了,这绝对是低效的

最佳答案

C 没有默认参数,如果您使用 C++ 编程,您应该使用 std::stringremove_if来自 <algorithm> .

您绝对可以通过消除对 strlen 的调用来提高效率,这会将 O(N) 算法转换为 O(N2) 算法,并且完全没有必要——无论如何您都在扫描字符串,所以您自己寻找 NUL 即可。

您还可以通过使用两个指针而不是数组索引来使其更加符合 C 语言习惯。我会这样做:

void strip_char(char *str, char strip)
{
char *p, *q;
for (q = p = str; *p; p++)
if (*p != strip)
*q++ = *p;
*q = '\0';
}

关于c - 就地从字符串中去除空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7775138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com