字符重排

此博客链接:https://www.cnblogs.com/ping2yingshi/p/14017921.html

字符重排

题目

题目链接:https://leetcode-cn.com/problems/check-permutation-lcci/

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

示例 1:

输入: s1 = "abc", s2 = "bca"
输出: true
示例 2:

输入: s1 = "abc", s2 = "bad"
输出: false
说明:

0 <= len(s1) <= 100
0 <= len(s2) <= 100

题解

题意:一个字符串的每个字母和另外一个字符串的每个字母一样。

思路:判断一个字符串中的每个字符是否在另外一个字符串中都存在,并且个数相等。

方法:

        1.先判断两个字符串长度是都相等,如果长度都不相等,那么其中一个字符串经过重排一定不肯能变成另外一个字符串。

        2.长度相等时,判断两个字符串中相同字母出现的次数是否相等,如果不相等,那么其中一个字符串经过重排一定不肯能变成另外一个字符串。

 代码

class Solution {
    public boolean CheckPermutation(String s1, String s2) {
        int len1=s1.length();
        int len2=s2.length();
        if(len1!=len2)
           return false;
        char emp []={'a','b','c','d','e','f','g','h','i','g','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','G','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};

        //char datas[] = {'a', 'b', 'c'};
        //最多52个不同字母,26个大小写
        int result1[]=new int[52];
        int result2[]=new int[52];
        if(len1==len2){
            //先判断第一个字符串中每种字母包含多少个
            for(int i=0;i<52;i++)
            {
               for(int j=0;j<len1;j++)
               {
                  if(emp[i]==s1.charAt(j))
                      result1[i]++;
               }
            }
            for(int i=0;i<52;i++)
            {
                for(int j=0;j<len2;j++)
                {
                    if(emp[i]==s2.charAt(j))
                      result2[i]++;
                }
            }
        }
        for(int i=0;i<52;i++)
        {
            if(result1[i]!=result2[i])
                return false;
        }
      return true;
    }
}

 

posted @ 2020-11-21 23:40  萍2樱释  阅读(360)  评论(1编辑  收藏  举报