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

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

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

解法一:

使用charAt()方法,将字符串的每一位字符存入ASCII码对下标的数组中,然后遍历比较两个数组的值

import java.util.*;
class Solution {
    public int[] func(String str)
    {
        int []num=new int[26];
        for(int i=0;i<str.length();i++)
        {
            num[str.charAt(i)-'a']++;
        }
        return num;

    }
    public boolean CheckPermutation(String s1, String s2) {
        int []num1=func(s1);
        int []num2=func(s2);
       for(int i=0;i<26;i++)
       {
           if(num1[i]!=num2[i])
           {
               return false;
           }
       }
       return true;

    }
}

解法二:

将String字符串 转化为char类型的数组,
长度不相同肯定为false
再利用Arrays.sort(c1);进行有序排序,遍历进行比较。一旦有一个字符不相同,都返回false

import java.util.*;
class Solution {

    public boolean CheckPermutation(String s1, String s2) {
        char []num1=s1.toCharArray();
        char []num2=s2.toCharArray();
        Arrays.sort(num1);
        Arrays.sort(num2);
        if(num1.length!=num2.length)
        {
              return false;
        }
      
       for(int i=0;i<num1.length;i++)
       {
           if(num1[i]!=num2[i])
           {
               return false;
           }
       }
       return true;

    }
}

你可能感兴趣的:(排序算法,算法,leetcode)