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语言实现字符串左旋和右旋问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)