一、題目介紹
給定兩個字符串 s1 和 s2,請編寫一個程序,確定其中一個字符串的字符重新排列後,能否變成另一個字符串。
示例 1:
輸入: s1 = "abc", s2 = "bca"
輸出: true
示例 2:
輸入: s1 = "abc", s2 = "bad"
輸出: false
說明:
0 <= len(s1) <= 100
0 <= len(s2) <= 100
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/check-permutation-lcci
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
二、解題思路
利用^(異或)運算的特性,即相同爲0,不同爲1。將兩個字符串中的元素依次相互異或,如果爲0,則證明兩個字符串中的元素相同,即將其中一個字符串s2重排之後可以變成另一個字符串s2。詳細請見代碼。
三、解題代碼
class Solution {
public:
bool CheckPermutation(string s1, string s2) {
if(s1.size() != s2.size())
return false;
int ret = 0;
for(int i = 0; i < s1.size(); ++i)
{
ret ^= s1[i] ^ s2[i];
}
return ret == 0 ? true:false;
}
};