gpt4 book ai didi

c - 以下就地反向功能有任何问题吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:44:31 25 4
gpt4 key购买 nike

我编写了以下就地反向函数,它工作正常。

然而,当我在谷歌上搜索解决方案时,我发现了很多更复杂的解决方案,但没有这么简单的。以下是否不适用于某些输入或有一些性能问题?

void reverse(char* str) {
int n = strlen(str);
char temp;

for (int i=0; i<n/2; i++) {
temp = str[i];
str[i] = str[n-i-1];
str[n-i-1] = temp;
}
}

int main() {
char input[] = "Reverse Me!";
reverse(input);
return 0;
}

最佳答案

是的。这可能在您的系统上正常工作;然而,strlen 返回 size_t,它可能比 int 具有更高的精度,从而只产生实际字符串的一部分(或没有?)被逆转。这是一个简单的解决方法:将 n 声明为 size_t 而不是 int

如果在增加 x 的同时减少每次迭代的 n,您的解决方案可能会更简单。那么您就不需要那么多的减法逻辑,或者任何的除法逻辑。

void reverse(char *str) {
for (size_t x = 0, y = strlen(str); y --> x; x++) {
char temp = str[x];
str[x] = str[y];
str[y] = temp;
}
}

关于c - 以下就地反向功能有任何问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32130946/

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