LeetCode 859. 亲密字符串
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 859. 亲密字符串
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. 題目
給定兩個由小寫字母構(gòu)成的字符串 A 和 B ,只要我們可以通過交換 A 中的兩個字母得到與 B 相等的結(jié)果,就返回 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 僅由小寫字母構(gòu)成。來源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/buddy-strings
著作權(quán)歸領(lǐng)扣網(wǎng)絡所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
2. 解題
class Solution { public:bool buddyStrings(string A, string B) {if(A.size() < 2 || B.size() < 2 || A.size() != B.size())return false;int countA[26] = {0}, countB[26] = {0}, diff = 0;for(int i = 0; i < A.size(); ++i){if(A[i] != B[i])diff++;countA[A[i]-'a']++;countB[B[i]-'a']++;}for(int i = 0; i < 26; ++i)if(countA[i] != countB[i])return false;//個數(shù)不一樣。不行bool hasSameChar = false;for(int i = 0; i < 26; ++i)if(countA[i] >= 2){hasSameChar = true;//有相同的字符break;}if(diff == 2 || (diff == 0 && hasSameChar))return true;//不同的位置為2,或者全部一樣,有相同字符可以互換return false;} };4 ms 9.1 MB
總結(jié)
以上是生活随笔為你收集整理的LeetCode 859. 亲密字符串的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 174. 地下城游戏(
- 下一篇: LeetCode 1502. 判断能否形