码迷,mamicode.com
首页 > 其他好文 > 详细

211 字符串置换

时间:2018-06-16 15:14:14      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:哈希   end   AC   type   c代码   改变   details   bool   esc   

原题网址: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 字符串置换

标签:哈希   end   AC   type   c代码   改变   details   bool   esc   

原文地址:https://www.cnblogs.com/Tang-tangt/p/9190485.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!