三次翻转解决串逆序
来源:互联网 发布:公网ip如何绑定域名 编辑:程序博客网 时间:2024/05/18 22:54
【左神】
【问题描述】
假设串s,给定下标k,将s分为子串L,P.使原本LP的串变为PL,在不使用辅助数组的情况下。
例:S[10]={1,2,3,4,5,6,7,8,9,10} 给定K值为6,再改变后的S串为S[10]={7,8,9,10,1,2,3,4,5,6}
【问题分析】
题目要求不使用辅助数组,如果要使用辅助数组的话问题很容易解决,只需要把原本的数组根据要求复制到新的数组中,但在不使用辅助数组的情况下,我们只能在原本的数组上修改,在这里我们使用3次翻转。首先将L串逆序,再将P串逆序,再将整体逆序。逆序的方法为两两交换。
[JAVA代码] 我也不知道的代码是否符合要求(时间空间复杂度)
public class Array { public static void main(String args[]) { int [] args_= {0,1,2,3,4,5,6,7,8,9}; Array a = new Array(); a.array_three(args_, 6, 10); //6为要转换的中间点 10为数组的长度。 } public void array_three(int[] args_,int k,int p) {//k点之前进行逆序 for(int i=0;i<k/2;i++){int temp; //做中间变量temp=args_[i];args_[i]=args_[k-1-i];args_[k-1-i]=temp; } //k点之后进行逆序for(int i=0;i<(p-k)/2;i++) {//后面一段int temp; //做中间变量temp=args_[i+k];args_[i+k]=args_[p-1-i];args_[p-1-i]=temp;}//整个逆序for(int i=p-1;i>=0;i--) {System.out.print(" "+args_[i]+",");}}}运行结果(复制粘贴就可以运行)
阅读全文
1 0
- 三次翻转解决串逆序
- IOS nsarray 逆序翻转
- 链表翻转/逆序
- 字符串逆序翻转
- 单链表逆序,直接翻转指针!!
- 数组部分元素反转--三次翻转法
- 华为OJ:字符逆序和单词翻转
- 链表逆序和链表翻转
- 实现字符串翻转(逆序输出)
- 翻转串
- 信号量机制 优先级翻转 解决
- 解决Qt5屏幕翻转问题
- 解决上传横屏图片不翻转
- 解决相片上传,相片翻转角度问题
- TCP三次握手和漏洞解决
- TCP三次握手和漏洞解决
- 翻转子串
- 原串翻转
- 2017/10/13笔记
- FreeMarker(二)SpringMVC整合
- [spark] 数据本地化及延迟调度
- 再次小结windows服务的编写
- 2017.10.18 當日總結
- 三次翻转解决串逆序
- C语言 常量与变量
- Linux_CentOS 6.5安装Mysql
- 探新Web前端开发(五)
- 【CodeForces 429D】Tricky Function 【思维转化+分治求最近点对】
- 编写“木马生成器”软件总结
- 【数据结构】栈与队列基础
- Spring事务管理@Transactional
- 主机序和网络序