程序員面試金典——面試題01.02.判斷是否互爲字符重排

一、題目介紹

給定兩個字符串 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;
    }
};

四、解題結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章