首页 > 代码库 > 编程之美--2.17
编程之美--2.17
题目描述:数组循环移动K位
分析:这道题和之前碰到的字符串循环移位其实是一个思路的,编程珠玑上面也讲了这道题。
(1)第一种方法是对数组划分成两个部分,对两部分进行反转,同时对整个数组进行反转
(2)第二种方法是将第i位的元素和(i+k)%N的元素交换,从第0个元素开始,循环直到回到第0个元素。
1 #include <iostream> 2 #include <queue> 3 #include <climits> 4 #include <algorithm> 5 #include <memory.h> 6 #include <stdio.h> 7 #include <ostream> 8 #include <vector> 9 #include <list>10 #include <cmath>11 #include <string>12 #include <stdexcept>13 #include <stack>14 using namespace std;15 16 void fun(string s,int k)17 {18 k = k%s.length();19 int t = 0;20 char c = s[t];21 bool flag = true;22 while(flag)23 {24 char tmp = s[(t+k)%s.length()];25 s[(t+k)%s.length()] = c;26 t = (t+k)%s.length();27 if(t == 0)28 {29 flag = false;30 s[t] = c;31 }32 c = tmp;33 }34 cout<<s<<endl;35 }36 37 int main()38 {39 string s("abcd");40 fun(s,1);41 return 0;42 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。