1.题目:
2.解析:
这里利用预处理思想:要找多个位置先记录下某个位置:
这里 i 遍历来记录s1,和s2的位置,不断更新来找到最小距离。
代码:
java">public static void main(String[] args) throws IOException {BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));int n = Integer.parseInt(reader.readLine());String[] str = reader.readLine().split(" ");String s1 = str[0],s2 = str[1];int prev1 = -1;//记录s1位置int prev2 = -1;//记录s2位置int ret = Integer.MAX_VALUE;for(int i = 0; i < n; i++) {if(str[i].equals(s1)){ //前面找s2if(prev2 != -1){//看左边是否有s2ret = Math.min(ret,i-prev2);prev1 = i;}}if(str[i].equals(s2)){ //前面找s1if(prev1 != -1){//看左边是否有s1ret = Math.min(ret,i-prev1);prev2 = i;}}}System.out.println(ret);}