211 字符串置换

Posted tang-tangt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了211 字符串置换相关的知识,希望对你有一定的参考价值。

原题网址:https://www.lintcode.com/problem/string-permutation/description

描述

给定两个字符串,请设计一个方法来判定其中一个字符串是否为另一个字符串的置换。

置换的意思是,通过改变顺序可以使得两个字符串相等。

您在真实的面试中是否遇到过这个题?  

样例

"abc" 为 "cba" 的置换。

"aabc" 不是 "abcc" 的置换。

标签
排列
字符串处理
 
思路:只要判断两个字符串中相同字符数量是否一致就好,需要两个哈希表统计各自的字符及数量,然后对比。
 
AC代码:
class Solution {
public:
    /**
     * @param A: a string
     * @param B: a string
     * @return: a boolean
     */
    bool Permutation(string &A, string &B) {
        // write your code here
    int sizeA=A.size();
    int sizeB=B.size();
    if (sizeA!=sizeB)
    {
        return false;
    }
    map<char,int> m1;
    map<char,int> m2;
    for (int i=0;i<sizeA;i++)
    {
        if (m1.find(A[i])!=m1.end())//统计字符数量;
        {
            m1[A[i]]++;
        }
        else
        {
            m1[A[i]]=1;
        }
        if (m2.find(B[i])!=m2.end())//统计字符数量;
        {
            m2[B[i]]++;
        }
        else
        {
            m2[B[i]]=1;
        }
    }

    for (int i=0;i<sizeA;i++)
    {
        if (m1[A[i]]!=m2[A[i]])
        {
            return false;
        }
    }
    return true;
    }
};

 

还可以对两个字符串排序,然后比较排序后的字符串是否相等。参考:https://blog.csdn.net/qiujiahao123/article/details/77714776
 
 

以上是关于211 字符串置换的主要内容,如果未能解决你的问题,请参考以下文章

通过更改大小写来置换字符串(不影响数字)

字符串置换

python实现替代密码与置换密码

字符串置换问题

字符串置换 python3

置换的阶乘时间复杂度