Problem: 859. Buddy Strings 亲密字符串
解题过程
耗时100%,首先检查长度是否相等,然后检查字母统计次数是否相同,最后统计相同索引不同字母的总数,若不同字母总数sum0,则判断是否有字母个数>1,若sum2则true否则false
Code
class Solution { public: int ch[26], hc[26]; bool buddyStrings(string s, string goal) { int n1 = s.size(), n2 = goal.size(); if(n1!=n2) return false; memset(ch, 0, sizeof(ch)); memset(hc, 0, sizeof(hc)); for(char& c:s) { ch[c-'a']++; } for(char& c : goal) { hc[c-'a']++; } for(int i = 0; i < 26; i++) { if(ch[i]!=hc[i]) { return false; } } int sum = 0; for(int i = 0; i < n1; i++) { if(s[i]!=goal[i]) { sum++; } } if(sum == 0) { for(int i = 0; i < 26; i++) { if(ch[i]>1) { return true; } } } if(sum == 2) return true; return false; } };