最小操作数 (错误笔记)
来源:互联网 发布:淘宝窗轮背景图 编辑:程序博客网 时间:2024/06/06 23:17
最少操作次数的简易版
题目详情
(以下思路感谢http://www.360doc.com/content/13/1219/09/10504424_338332083.shtml 及作者、)
提前说明一下:以下代码 考虑不完全 所以会有bug
不要盲目相信 、、在此 只是想做个个人笔记、、
思路:将第二个字符串变成数组 并且给每个字符下面加一个 int 数,
记着 第二个字符数组的数 是从0开始逐个递增的 、
将第一个字符串也转换成字符数组 同第二个一样 增加一个 对应的 int 数组
只不过这个int 数组的元素是按照 第二个数组对应的字符的int数 来赋值的
例如: 第二个数组 字符:a b c 对应的int 型数字: 0 1 2
第一个数组: c b a 对应的int 型数字 : 2 1 0
只需 将第一个字符数组的 int数组 排序即可 应用逆序数、、、每次找逆序数中最大的数
=============================================================
后来在oucyxc(灰常感谢)的帮助下 发现 这段代码有bug 即:不能正常排序有重复字符
例:String a=“xykkr” String b=“rykxk” 输出的结果是 2 、、明显不对、、
代码:
class Node { private char ch; private int x; public Node(char c, int x1) { ch = c; x = x1; } public Node(char c){ ch = c; } public char getCh() { return ch; } public void setCh(char ch) { this.ch = ch; } public int getX() { return x; } public void setX(int x) { this.x = x; } }public class Test { static int [] cc=null; static int z=0; public static int getNumber(String a,String b) { z=0; char[] arr=b.toCharArray(); Node[] aa=new Node[arr.length]; for(int i=0;i<arr.length;i++){ Node temp = new Node(arr[i],i); aa[i] = temp; } char[] qq=a.toCharArray(); Node[] bb=new Node [qq.length]; for(int i=0;i<qq.length;i++){ Node temp = new Node(qq[i]); bb[i] = temp; } for(int x=0;x<arr.length;x++){ for(int z=0;z<qq.length;z++){ if(aa[x].getCh()==bb[z].getCh()){ bb[z].setX(aa[x].getX()); } } } cc=new int[bb.length]; for(int i=0;i<bb.length;i++){ cc[i]=bb[i].getX(); } jk_sort(cc); //System.out.println(z); return z; } public static int[] jk_remove(int[] s, int index) { int temp = s[index]; for (int i = index - 1; i >= 0; i--) { s[i + 1] = s[i]; } s[0] = temp; z++; return s; } public static void jk_sort(int[] s) { int temp ='\0'; int p=0; for(int i = 1; i < s.length; i++) { for(int j = 0; j < i; j++) { if(s[i] < s[j]) { if(temp == '\0' || p < s[i]) { p=s[i]; temp = i; } break; } } } if(temp != '\0') { int [] arr= jk_remove(s, temp); jk_sort( arr); } else{ } } public static void main(String args[]) { // System.out.println(getNumber("uyyrk","ukyry")); System.out.println(getNumber("xykkr","rykxk")); } }
0 0
- 最小操作数 (错误笔记)
- 最小操作数(改版)
- 最小操作数
- 最小操作数
- 最小操作数
- 最小操作数
- 最小操作数
- 最小操作数
- 最小操作数-Java实现
- 庞果最小操作数
- 挑战编程:最小操作数
- 最小操作数递归实现
- 最小操作数简易版
- 25最小操作数问题
- 【庞果英雄会】最小操作数
- [PHP解算法题]最小操作数
- 最小操作数,木块砌墙问题
- Google编程题:最小操作数
- Java反射机制
- The type android.support.v4.app.TaskStackBuilder$SupportParentable cannot be resolved.
- android 背景重叠问题
- 【转】win7旗舰版(64位)环境下oracle11g的安装方法
- 也谈Linux Kernel Hacking – 内核配置、编译与安装
- 最小操作数 (错误笔记)
- Spring整合CXF,发布RSETful 风格WebService
- RETURN TRUE
- Lua基础教程
- Java字符串——大小写转换
- 将date命令结果转换为yyyymmdd日期格式
- linux安装jdk
- Ubuntu 模拟ARM开发环境
- SQL如何获得本季度第一天、一年的第一天、本月的最后一天