一个长度为len的字符串,对其循环右移n位

 

[期望]
char str[] = "abcdefg";
右移3次后,变成"efgabcd"

 

[思路]

思路1.

如果用每移动一次,就要把整个字符串整体移动一次的方法,显得太费劲了。
我们可以用空间换时间,通过内存拷贝来实现。
需要新申请一块相同大小的内存,把原字符串的后n个字节拷贝到它的开始地址,把原字符串的前(len-n)个字节拷贝到它的(开始地址+n)处。

为便于查看结果,我们先定义一个打印字符串的函数void print_str(char *str);

void print_str(char *str)
{
    int i,len;
    if (str == NULL) {
        return;
    }
    len = strlen(str);
    for(i=0; i<len; i++) {
        printf("%c",str[i]);
    }
    printf("\n");
}
print_str

相关文章:

  • 2022-12-23
  • 2021-06-02
  • 2022-12-23
  • 2021-04-07
  • 2021-08-12
  • 2021-11-07
猜你喜欢
  • 2021-09-25
  • 2022-12-23
  • 2021-09-05
  • 2022-12-23
  • 2022-12-23
  • 2021-11-28
  • 2022-12-23
相关资源
相似解决方案