两个字符串,忽略顺序,是否相同,即是否包含相同的字符,对应字符的数量也相同
"hello"和"olleh"相同。
思路:位运算,0异或0=0,0异或1=1,所以ans初始化为0,任何数和自己异或结果为0,这样用0异或两个字符串的每个字符就可。O(n)
bool match(string str1, string str2) {
int n = str1.size();
int n2 = str2.size();
if (n != n2) return false;
int ans = 0;
for (int i = 0; i < n; ++i) {
ans ^= str1[i];
ans ^= str2[i];
}
return ans == 0;
}
int main(){
string str1 = "hello";
string str2 = "heoll";
cout << match(str1, str2);
return 0;
}
持续补充