gpt4 book ai didi

c - 如何在 C 中将给定的字符串向左或向右旋转?

转载 作者:太空狗 更新时间:2023-10-29 15:49:42 25 4
gpt4 key购买 nike

C 函数将字符串向右或向左旋转给定的数字。当一个字符根据方向旋转超过字符串的末尾或开头时,它应该环绕

最佳答案

给定一个字符串str,长度为length,旋转量为n

向左旋转相当于

reverse(str, 0, n);
reverse(str, n, length);
reverse(str, 0, length);

向右旋转相当于

reverse(str, 0, length - n);
reverse(str, length - n, length);
reverse(str, 0, length);

现在你只需要一个反向函数。

更新:我想到了如何使用 mod 使您始终根据 n 的符号向正确的方向旋转。

例如

int mod = n % length;
if (mod != 0) { //if 0, don't rotate
reverse(str, 0, mod);
reverse(str, mod, length);
reverse(str, 0, length);
}

经历各种情况

如果 n == 5 且长度 = 10,mod = 5

如果 n == 16 且长度 = 10,mod = 6 -- 向左旋转 16 = 向左旋转 6

如果 n == 0 且 length = anything,mod = 0

如果 n == -1 且 length = 10,mod = 9 -- 向右旋转 1 与向左旋转 9 相同

如果 n == -15 且 length = 9,mod = 3 -- 向右旋转 15 与向左旋转 3 相同

关于c - 如何在 C 中将给定的字符串向左或向右旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1678707/

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