leetcode 859. 親密字符串(Buddy Strings)
阿新 • • 發佈:2019-04-07
leet lee size tro ring 返回 buddy 兩個 switch
目錄
- 題目描述:
- 示例 1:
- 示例 2:
- 示例 3:
- 示例 4:
- 示例 5:
- 解法:
題目描述:
給定兩個由小寫字母構成的字符串 A
和 B
,只要我們可以通過交換 A
中的兩個字母得到與 B
相等的結果,就返回 true
;否則返回 false
。
示例 1:
輸入: A = "ab", B = "ba"
輸出: true
示例 2:
輸入: A = "ab", B = "ab" 輸出: false
示例 3:
輸入: A = "aa", B = "aa"
輸出: true
示例 4:
輸入: A = "aaaaaaabc", B = "aaaaaaacb"
輸出: true
示例 5:
輸入: A = "", B = "aa"
輸出: false
提示:
0 <= A.length <= 20000
0 <= B.length <= 20000
A
和B
僅由小寫字母構成。
解法:
class Solution { public: bool buddyStrings(string A, string B) { if(A == B){ vector<bool> flag(128, false); for(char ch : A){ if(flag[ch]){ return true; }else{ flag[ch] = true; } } return false; }else if(A.size() != B.size()){ return false; }else{ int sz = A.size(); int pre = -1; bool changed = false; // when switch two charactors, set to true for(int i = 0; i < sz; i++){ if(A[i] != B[i]){ if(pre == -1){ pre = i; }else{ if(changed){ return false; } if(A[pre] != B[i] || A[i] != B[pre]){ return false; }else{ changed = true; } } } } return changed; } } };
leetcode 859. 親密字符串(Buddy Strings)