字符串之数组中两个字符串的最小距离

来源:互联网 发布:php软件指的是什么 编辑:程序博客网 时间:2024/05/22 13:30

题目:

给定一个字符串数组strs, 再给定两个字符串str1和str2,返回在strs中str1和str2的最小距离,如果str1和str2为null,或者不再strs中,都返回-1

列如:

strs = {"1","3","3","2","3","1","3"} ,str1 = "1" str2 = "2" 返回2
strs = {"CD"},str1 = "CD",str2="AC"  返回-1

代码实现:

package com.chenyu.string.cn;public class MinDistance {public static void main(String[] args) {String[] ss = {"a", "b", "c", "d", "c", "a", "d"};int result = minDistance(ss, "a", "d");System.out.println(result);}public static int minDistance(String[] target, String str1, String str2) {if (target == null || target.length == 0) {return -1;} if (str1 == null || str2 == null) {return -1;}boolean check1 = true, check2 = true;for (String s : target) {if (str1.equals(s)) {check1 = false;} if (str2.equals(s)) {check2 = false;}}if (check1 || check2) {return -1; } if (str1.equals(str2)) {return 0;}int min = Integer.MAX_VALUE;int last1 = -1;int last2 = -1;for (int i = 0; i < target.length; i++) {if (target[i].equals(str1)) {min = Math.min(min, last2 == -1 ? min : i - last2);last1 = i;}if (target[i].equals(str2)) {min = Math.min(min, last1 == -1 ? min : i -last1);last2 = i;}}return min == Integer.MAX_VALUE ? -1 : min;}}

运行结果:

1




0 0