给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。

力扣

这题还挺水的,可以先对字符串排序后比较,也可以创建一个哈希表存一下,然后再拿第二个比一下就出来了。一个需要空间,一个需要时间。

设计思路

首先依据字符串的每种元素依次创建表内数据,然后对字符串进行检查(若俩字符串长度不相等直接输出false)

代码实例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
bool CheckPermutation(string s1, string s2) {
    //若长度不相等,直接返回false
    if (s1.length() != s2.length()) {
        return false;
    }
    map<char, int> table;
    //若s1中有某元素,记录++
    for (auto& ch: s1) {
        ++table[ch];
    }
    //若s2中有,则--,若s1中没有,返回false
    for (auto& ch: s2) {
        --table[ch];
        if (table[ch] < 0) {
            return false;
        }
    }
    //检查完毕
    return true;
}