使用C语言实现字符串左旋和右旋问题

使用C语言实现字符串左旋和右旋问题,第1张

概述这篇文章主要介绍了使用C语言实现字符串左旋和右旋问题,需要的朋友可以参考下

1.实现一个函数,可以左旋字符串中的k个字符。

ABCD左旋一个字符得到Bcda

ABCD左旋两个字符得到cdaB

1.暴力移位法

#include

#include

#include

voID left_move(char*str,int k)

{

int len = 0;

int i = 0;

while (k--)

{

//1.把第一个保存起来

char tmp = *str;

//2.后面的向后移动

len = strlen(str);

for (i = 0; i < len; i++)

{

*(str + i) = *(str + 1 + i);

}

//3.把保存的数据放在最后一位

*(str + len - 1) = tmp;

}

}

int main()

{

char arr[] = "ABCD";

int n = 0;

printf("请输入左旋位数:");

scanf_s("%d",&n);

left_move(arr,n);

printf("%s ",arr);

system("pause");

return 0;

}

2.三步翻转法

#include

#include

#include

#include

voID reverse(char *left,char* right)

{

assert(left&&right);//断言

while (left < right)

{

char tmp = *left;

*left = *right;

*right = tmp;

left++;

right--;

}

}

voID left_move(char*str,int k)

{

int len = strlen(str);

reverse(str,str + k - 1);//逆序前半部分

reverse(str+k,str + len - 1);//逆序后半部分

reverse(str,str+ len - 1);//逆序整个字符串

}

int main()

{

char arr[] = "ABCD";

int n = 0;

printf("请输入左旋位数:");

scanf_s("%d",arr);

system("pause");

return 0;

}

2.实现一个函数,可以右旋字符串中的k个字符。

ABCD右旋一个字符得到DABC

ABCD右旋两个字符得到cdaB

1.暴力移位法


#include

#include

#include

voID right_move(char* p,int k)

{

int len = strlen(p);

for (int i = 0; i < k; ++i)//控制旋转次数

{

char tmp = p[len - 1];

for (int j = len - 1; j > 0; --j)//完成一次旋转

{

p[j] = p[j - 1];

}

p[0] = tmp;

}

}

int main()

{

char arr[] = "ABCD";

int n = 0;

printf("请输入右旋位数:");

scanf_s("%d",&n);

right_move(arr,arr);

system("pause");

return 0;

}

2.三步翻转法:先把字符串整体逆序,然后分别是前半部分逆序和后半部分逆序或者

先是后半部分逆序,接下来是前半部分逆序,最后再整体逆序都可以

具体代码如下:

#include

#include

#include

#include

voID reverse(char *left,char* right)

{

assert(left&&right);//断言

while (left < right)

{

char tmp = *left;

*left = *right;

*right = tmp;

left++;

right--;

}

}

voID right_move(char*str,str + len-k -1);//逆序前半部分

reverse(str+len-k,str + len - 1);//逆序后半部分

reverse( str,str + len - 1);//逆序整个字符串

reverse(str,str + len - 1);//逆序后半部分

}

int main()

{

char arr[] = "ABCDEFG";

int n = 0;

printf("请输入右旋位数:");

scanf_s("%d",arr);

system("pause");

return 0;

}

总结

以上所述是小编给大家介绍的使用C语言实现字符串左旋和右旋问题。内存溢出 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得内存溢出不错,可分享给好友!感谢支持。

总结

以上是内存溢出为你收集整理的使用C语言实现字符串左旋和右旋问题全部内容,希望文章能够帮你解决使用C语言实现字符串左旋和右旋问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1264841.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存