一个长度为2N的数组,前面N个是数字,后面N个是字母,类似123abc,让转化为1a2b3c
2016-10-09 18:54
337 查看
#include <iostream> using namespace std; #include <vector> #include <string> void swap(int& a,int& b) { int temp = a; a = b; b = a; } void convert(vector<string>& ele,int gap) { int len = ele.size(); int n = len / 2; if(gap < n) { for(int i = gap ; i < n; ) { for(int j = 0; j < gap; ++j) { swap(ele[i + j],ele[n + i + j - gap ]); } i += 2*gap; } convert(ele,2*gap); } } int main() { vector<string> res; res.push_back("1"); res.push_back("2"); res.push_back("3"); res.push_back("a"); res.push_back("b"); res.push_back("c"); convert(res,1); for(int i = 0; i < res.size(); ++i) cout << res[i] << endl; return 0; }
相关文章推荐
- 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%100000000
- 将一个数字字符串转换为数字(支持数字中间夹杂字母,但是受int型的限制,转化的长度很有限),如:"1234" -->1234
- java实现快速排序的分割思想:在快速排序算法中,我们随机在数组中选择一个数字,然后把比选中数字小的数字都排在它前面,比选中数字大的数字都排在它的后面。
- 在一个长度为10的整形数组中,已经放置好了任意10个整数。要求用户任意输入 一个整数,判断该数字是否在数组中。如果在,删除数组中该元素,并把后面的 元素往前挪。(让空出的位置在最后)
- 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007
- 数组:f[a,A,h,f,H,F]实现一个排序的效果:[A,a,F,f,H,h],先按字母顺序排列,再把每个字母的大写字母写在前面,小写放在后面。
- 面试题:将一个字符串数组中的字母按照以下规则排列:表中任何单词的首字母与其前面单词的尾字母相同! 要求:字符串只由小写字母构成,且每个字符串长度在2-100之间
- 一个长度为N的整形数组,数组中每个元素的取值范围是[0,N-1],写一个算法判断数组中是否存在重复的数字
- 数组中一个数字出现的次数超过了数组长度的一半,找出这个数字
- 数组中有一个数字出现的次数超过了数组长度的一半,找出这个数
- 消除原理____假设数组中有一个数字出现的次数超过了数组长度的一半,试编程找出这个数字(qosrt 快速排序 哈希)
- 写一个函数int Func(int* A, int nSize), 使A把0移至后面,非0整数移至数组前面 并保持有序,返回值为原数据中第一个元素为0的下标。
- 给定一个数组,奇数全排在前面,偶数全排在后面
- 编程之美 2.18数组分割 将一个长度为2N的数组分割成2个长度为N的数组,且两数组的和的差的绝对值最小,即和最接近 动态规划?????????????????????????????????????
- 面试题:给定一个长度为N的数组,其中每个元素的取值范围都是1到N。判断数组中是否有重复的数字
- 一个数组arr,长度为N,N小于10^8,里面数字的范围是1~N,求每个数字出现的次数
- 一个整数数组,用后面的元素减去前面的元素,求最大值。
- 输入一个小写字母 自动输入这个小写字母前面和后面的大写和小写字母
- 面试:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数
- randnumber_mn.c 生成一个数组,包括k个不重复的整数,并且要求这些整数范围为[m,n),生成的结果中不能包含inum中的数字,size表示inum的长度