题目概述:
给定两个字符串列表,找到两个列表中的公共字符串,并且满足两个相同字符串(列表公共字符串各自索引的和最小)的索引和最小。
思路:
1、首先两个列表中的公共字符串,最先想到的用set或者map。(具体操作是把第一个把一个列表list1中的全部字符串添加到set或map中。再遍历第二个列表list2。判断list2中的元素是不是在set或map中contain就好。)。 但是这里还有一个条件是“满足两个列表的索引和最少”。 所以使用map可以顺带记录一下索引。摒弃set。
2、找出共同的字符串的问题解决了。如何让其索引和最小呢(可以试着写一个求数组的最小值或者最大值的代码:这里说求最小值的思路,设置一个变量,假设其是最小值,跟数组中的每一个元素比较,如果数组中的元素还有比它小的,用当前元素替换掉最小值的值即可,如此直到数组遍历完成)?下面贴一下代码
public class FindRestaurant {public String[] findRestaurant(String[] list1,String[] list2) {if (list1==null||list1.length==0||list2==null||list2.length==0) return null;Map map=new HashMap<>();List help=new LinkedList<>();for(int i=0;i