Buddy Strings
给两个字符串, 问交换其中一个字符串的两个字符后能不能变成另一个字符串. 这个题corn case很多….
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
class Solution { public boolean buddyStrings(String A, String B) { if(A.length() != B.length()) return false; if(A.equals(B)){ int[] count = new int[26]; for (int i = 0; i < A.length(); ++i) count[A.charAt(i) - 'a']++; for (int c: count) if (c > 1) return true; return false; } int first = -1, second = -1; for (int i = 0; i < A.length(); ++i) { if (A.charAt(i) != B.charAt(i)) { if (first == -1) first = i; else if (second == -1) second = i; else return false; } } return (second != -1 && A.charAt(first) == B.charAt(second) && A.charAt(second) == B.charAt(first)); } } |