class Solution { public boolean buddyStrings(String s, String goal) { int len1 = s.length(), len2 = goal.length(); if(len1 != len2) return false; Set<Character> set = new HashSet<>(); for(int i = 0; i < len1; i++) set.add(s.charAt(i)); // 字符串相等的时候, 只要有重复的元素就返回true if(s.equals(goal)) return set.size() != len1; List<Character> list = new ArrayList<>(); for(int i = 0; i < len1; i++){ if(s.charAt(i) != goal.charAt(i)){ list.add(s.charAt(i)); list.add(goal.charAt(i)); } // 两个不相等的地方直接返回false if(list.size() > 4) return false; } // 字符串有不相等的两个地方, 需要查看它们交换后是否相等即可. if(list.size() < 4) return false; if(list.get(0) == list.get(3) && list.get(1) == list.get(2)){ return true; } return false; } }