【C语言】实现一个函数,可以左旋字符串中的k个字符。
来源:互联网 发布:app源码下载 编辑:程序博客网 时间:2024/04/29 19:11
.实现一个函数,可以左旋字符串中的k个字符。
AABCD左旋一个字符得到ABCDA
AABCD左旋两个字符得到BCDAA
思路:
1.如果直接进行左移,肯定会存在数组前面的元素丢失。
解决办法:->在函数内定义第三者数组arr1,保存左环移后对应下标的值。
2.存在问题:移位后对应的下标确定
解决办法:->如果依次arr下标i 移k次后 分>0,<0两种情况,如果>0
直接保存到arr1[i-k];如果<0,保存到arr1[n+(i-k)]处,此处n值为arr不包括’\0’的元素个数。
2.然后将第三者对应保存的元素依次在送给调用函数传进来的数组arr。
3.打印验证结果。
#include<stdio.h>#include<windows.h>void reverse(char arry[], int k);int main(){ char arry[] = "AABCD"; int k = 0; printf("please input the removing number:\n"); scanf_s("%d", &k); reverse(arry, k); puts(arry); printf("\n"); system("pause"); return 0;}//定义左环移函数reversevoid reverse(char arry[], int k){ int n = strlen(arry); int m = k%n; //可能输入一个比字符串还长的k值,进行求模运算 char arry1[100] = { 0 }; //定义第三者,将环移后的值保存在arr1 int i = 0, j = 0; for (i = 0; i < n; i++, j++) { if (i - m >= 0) { arry1[i-m] = arry[i]; } else { arry1[n + (i - m)] = arry[i]; } } for (i = 0; i < n ; i++) { arry[i] = arry1[i]; //将保存的值送还给输入的数组 }}
输入:189
输出:DAABC
0 0
- C语言:实现一个函数,可以左旋字符串中的k个字符。
- 【C语言】实现一个函数,可以左旋字符串中的k个字符。
- 【C语言】【笔试题】【面试题】实现一个函数,可以左旋字符串中的k个字符
- 【C语言】【笔试题】【面试题】实现一个函数,可以左旋字符串中的k个字符
- 1.实现一个函数,可以左旋字符串中的k个字符。 ABCD左旋一个字符得到BCDA
- 实现一个函数,可以左旋字符串中的k个字符
- 实现一个函数,可以左旋字符串中的k个字符
- 实现一个函数,可以左旋字符串中的k个字符
- 实现一个函数,可以左旋字符串中的k个字符(不同复杂度的算法)
- 实现一个函数,可以左旋字符串中的k个字符
- 编写一个函数,可以实现左旋字符串中的k个字符。
- .实现一个函数,可以左旋字符串中的k个字符。
- 实现一个函数,可以左旋字符串中的k个字符
- 【Ex.】实现一个函数,可以左旋字符串中的k个字符
- 实现一个函数,可以左旋字符串中的k个字符。(三种方法)
- 实现一个函数,可以左旋字符串中的k个字符。
- 实现一个函数,可以左旋字符串中的k个字符。
- 三种方法实现一个函数,可以左旋字符串中的k个字符
- MySQL命令语句笔记
- A+B for Input-Output Practice (IV)
- C# 如何实现热键注册 RegisterHotKey
- Problem_4 小金掰呀掰不够玉米
- c++模板重载之字符串模板库的简单实现
- 【C语言】实现一个函数,可以左旋字符串中的k个字符。
- C/C++练习7---求某个范围内的所有素数
- windows 80端口被占用的解决方法
- CSS常见布局实现
- 关于c++ SysTreeView32 这玩意的....获得选中节点属性的方法
- Ubuntu 14.04 环境下在ROS安装测试Cartographer
- C语言实验——素数
- test
- Android主流图片框架浅析