1020 字符串编辑距离
来源:互联网 发布:阿里云 香港机房 被墙 编辑:程序博客网 时间:2024/06/03 06:43
题目详情
给定一个源串和目标串,能够对源串进行如下操作:
1.在给定位置上插入一个字符
2.替换任意字符
3.删除任意字符
写一个程序,返回最小操作数,使得对源串进行这些操作后等于目标串,源串和目标串的长度都小于2000。
输入:两个字符串,一个源串,一个目标串
输出:最小操作数
代码
package com.ausky.work.pongo;/** * 给定一个源串和目标串,能够对源串进行如下操作: 1.在给定位置上插入一个字符 2.替换任意字符 3.删除任意字符 * 写一个程序,返回最小操作数,使得对源串进行这些操作后等于目标串,源串和目标串的长度都小于2000。 * * * * 输入:两个字符串,一个源串,一个目标串 * * 输出:最小操作数 * * @author xn-hyao-01 * */public class Ponggo_1020 {public static void main(String[] args) {String source = "1234567891";String desert = "0001032432";Ponggo_1020 pongo = new Ponggo_1020();String[] compareResult = pongo.compareString(source, desert);//如果一个重复的都没有的话 需要将source删除 将desert 全部重新插入int operatorCounts = source.length() + desert.length();for(String str : compareResult){System.out.println(str);}System.out.println(compareResult);String result = "";for(int i = 0; i < compareResult.length;i++){String tmpResult = pongo.recursionSource(compareResult, i, -1, "");if(result.length() <= tmpResult.length()){result = tmpResult;}}if(result.length() >0){operatorCounts = operatorCounts - result.length();}System.out.println(operatorCounts);}/** * 获取比较结果 * @param source * @param disert * @return */private String[] compareString(String source, String desert){char[] sourceChars = source.toCharArray();char[] desertChars = desert.toCharArray();String[] sourceComperDesert = new String[source.length()];int seat = 0;for(char sourceChar : sourceChars){StringBuilder comperRes = new StringBuilder();for(char desertChar : desertChars){if(sourceChar == desertChar){comperRes.append("1");}else{comperRes.append("0");}}sourceComperDesert[seat] = comperRes.toString();seat++;}return sourceComperDesert;}private String recursionSource(String[] sourceComperDisert, int arraySeat,int stringSeat, String sourceSeats) {int arraySize = sourceComperDisert.length;String recursionRes = sourceSeats;for (; arraySeat < arraySize; arraySeat++) {String source = sourceComperDisert[arraySeat];int nextStringSeat = source.indexOf('1', stringSeat + 1);if (nextStringSeat != -1) {String tmpRes = recursionSource(sourceComperDisert, arraySeat + 1,nextStringSeat, sourceSeats + arraySeat + ",");if(recursionRes.length() < tmpRes.length()){recursionRes = tmpRes;}}}return recursionRes;}}
- 1020 字符串编辑距离
- 字符串的编辑距离
- 字符串编辑距离查表法
- 求字符串编辑距离
- 字符串的编辑距离
- 字符串编辑距离
- 字符串编辑距离
- 字符串编辑距离
- 字符串编辑距离
- 字符串编辑距离
- 字符串编辑距离
- 求字符串编辑距离
- 字符串编辑距离
- 字符串编辑距离算法
- 编辑字符串距离
- 字符串编辑距离
- 字符串编辑距离
- 字符串编辑距离
- 少年派
- 1019 最大乘积连续子串
- Struts2原理详解
- Android SDK各个版本区别及如何选择
- 用jquery解析JSON数据的方法
- 1020 字符串编辑距离
- 程序员学习能力提升三要素
- jquery json 格式教程
- python str与bytes之间的转换
- ibatis默认值提交的几种方法
- Mesa3D与单缓冲区
- Noj-1392(并查集)
- Oracle简单查询语句
- jquery对json数据进行增删改查的例子