面试算法——3.从初始字符串开始,相邻交换,得到目标字符串
2015-12-02 14:24
239 查看
(湖北武汉)来自一位同学的题。将“GUW”转化为“WUG”,仅相邻的字符能够互换位置,打印互换每一步的结果。
eg.
G U W
G W U
W G U
W U G
eg.
G U W
G W U
W G U
W U G
public class Pro_3_StringTranspose { private static char[] target; private static char[] source; public static void transpose(String string1, String string2) { source = string1.toCharArray(); target = string2.toCharArray(); int len=target.length; int[] tmp = new int[len]; //将target的字符编号:W 0,U 1,G 2 ... //将source的字符转换为数字:G 2,U 1 W 0 for (int i = 0; i < len; i++) { for (int j = 0; j < len; j++) if (target[j] == source[i]) { tmp[i] = j; } } printString(tmp); //操作原字符串 for(int i=0;i<len;i++) { for(int j=i;j<len;j++) { //找到0,然后开始,向前移动,相邻互换,至第一位 //再找1,向前互换,至第二位...... if(tmp[j] == i ) { for(int k=j;k>i;k--) { int t=tmp[k]; tmp[k] = tmp[k-1]; tmp[k-1]=t; //打印交换后的字符 printString(tmp); } } } } } private static void printString(int[] tmp) { for(int i=0;i<tmp.length;i++) { System.out.print(target[tmp[i]]+" "); } //可注释掉,用于直观观察 for(int i=0;i<tmp.length;i++) { System.out.print(tmp[i]+" "); } System.out.println(); } public static void main(String[] args) { // TODO Auto-generated method stub transpose("GUW", "WUG"); } }
相关文章推荐
- 第一次面试!!!!
- 秒杀多线程第一篇 多线程笔试面试题汇总
- 写一本技术书能赚多少钱
- 黑马程序员--Java编程之代码执行的流程控制
- 全志面试题(嵌入式软件)
- 成为一名更好的程序员:如何阅读源代码
- 黑马程序员之JAVA中的ArrayList
- 【面试技巧】最全的面试求职攻略_每日更新
- 屌丝码农该怎么过周末
- 程序员为对抗雾霾可以做些什么?
- 程序员为对抗雾霾可以做些什么?
- 黑马程序员——OC学习——面向对象
- 程序员的自我修养
- 面试时,如何向公司提问?
- 黑马程序员——OC学习——@property和构造方法
- Activiti工作流面试相关知识!
- Android常遇到的面试
- 高效程序员的八个习惯
- 项目管理启航篇-那些年,我们遇到的项目经理。
- 从.net转型,聊聊最近一些面试,薪资和想法