求助大佬(Another string problem)
import java.util.Scanner;
public class Main {static boolean flag = false;
public static void main(String[] args) { Scanner input = new Scanner(System.in); StringBuilder s = new StringBuilder(input.next()); StringBuilder t = new StringBuilder(input.next()); dfs(s,t,1); if (flag){ System.out.println("YES"); }else { System.out.println("NO"); } } static void dfs(StringBuilder s,StringBuilder t,int update){ if (Math.abs(s.length() - t.length()) > 1){ return; } if (update == 0){ if (s.toString().equals(t.toString())){ flag = true; } return; } if (s.length() == t.length()){ for (int i = 0; i < s.length(); i++) { if (s.charAt(i) != t.charAt(i)){ StringBuilder ss = new StringBuilder(s.toString()); ss.setCharAt(i,t.charAt(i)); dfs(ss,t,update-1); } } }else if (s.length() < t.length()){ StringBuilder ss = new StringBuilder(s.toString()); for (int i = 0; i < s.length(); i++) { if (s.charAt(i) != t.charAt(i)){ ss.insert(i, t.charAt(i)); dfs(ss,t,update-1); return; } } ss.append(t.charAt(t.length() - 1)); dfs(ss, t, update - 1); }else { StringBuilder ss = new StringBuilder(s.toString()); for (int i = 0; i < t.length(); i++) { if (s.charAt(i) != t.charAt(i)){ ss.deleteCharAt(i); dfs(ss,t,update-1); return; } } ss.deleteCharAt(t.length()-1); dfs(ss, t, update - 1); } }
}