Check if One String Swap Can Make Strings Equal
给两个string, 求是否可以通过一次交换, 使得两个string相同.
用个list存不同的index, 然后check. 注意开始的时候可以通过2个string的长度判断一下.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
class Solution { public boolean areAlmostEqual(String s1, String s2) { if(s1.equals(s2)) return true; if(s1.length() != s2.length()) return false; int n = s1.length(); List<Integer> list = new ArrayList<>(); for(int i = 0 ; i < n; i++) { if(s1.charAt(i) != s2.charAt(i)){ list.add(i); } } if(list.size() == 0)// all same return true; if(list.size() != 2)// only 2 different return false; return s1.charAt(list.get(0)) == s2.charAt(list.get(1)) && s1.charAt(list.get(1)) == s2.charAt(list.get(0));// check the 2 different } } |