1.题目:
2.解析:
这里利用预处理思想:要找多个位置先记录下某个位置:
这里 i 遍历来记录s1,和s2的位置,不断更新来找到最小距离。
代码:
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)){ //前面找s2 if(prev2 != -1){ //看左边是否有s2 ret = Math.min(ret,i-prev2); prev1 = i; } } if(str[i].equals(s2)){ //前面找s1 if(prev1 != -1){ //看左边是否有s1 ret = Math.min(ret,i-prev1); prev2 = i; } } } System.out.println(ret); }