zoukankan      html  css  js  c++  java
  • 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
     
     
  • 相关阅读:
    招标问什么
    其他房产
    长沙
    flume kafka
    http://www.zhihu.com/question/24301047
    38.NOW() 函数
    35.MID() 函数
    36.LEN() 函数
    34.UCASE() LCASE() 函数
    33.HAVING 子句
  • 原文地址:https://www.cnblogs.com/Tang-tangt/p/9190485.html
Copyright © 2011-2022 走看看