欢迎访问宙启技术站
智能推送

Java函数实现判断两个字符串是否为相同的字母排列

发布时间:2023-07-06 02:10:01

判断两个字符串是否为相同的字母排列,可以使用两种方法来实现。

方法1:使用排序

首先,将两个字符串转换为字符数组。

然后,对字符数组进行排序,可以使用Arrays类的sort方法。

最后,比较排序后的字符数组是否相同。

以下是使用排序方法实现的Java函数:

import java.util.Arrays;

public class SamePermutation {
    public static boolean isSamePermutation(String str1, String str2) {
        // 将字符串转换为字符数组
        char[] charArray1 = str1.toCharArray();
        char[] charArray2 = str2.toCharArray();

        // 对字符数组进行排序
        Arrays.sort(charArray1);
        Arrays.sort(charArray2);

        // 比较排序后的字符数组是否相同
        return Arrays.equals(charArray1, charArray2);
    }

    public static void main(String[] args) {
        String str1 = "abc";
        String str2 = "cba";

        if (isSamePermutation(str1, str2)) {
            System.out.println("两个字符串是相同的字母排列");
        } else {
            System.out.println("两个字符串不是相同的字母排列");
        }
    }
}

方法2:使用字符计数

首先,创建一个长度为26的整型数组counts,表示26个字母的计数。

然后,遍历 个字符串,对计数数组进行相应字母的计数。

接着,遍历第二个字符串,对计数数组进行相应字母的计数。

最后,比较两个计数数组是否相同。

以下是使用字符计数方法实现的Java函数:

public class SamePermutation {
    public static boolean isSamePermutation(String str1, String str2) {
        // 创建一个长度为26的整型数组,表示26个字母的计数
        int[] counts = new int[26];

        // 遍历      个字符串,对计数数组进行相应字母的计数
        for (char c : str1.toCharArray()) {
            counts[c - 'a']++;
        }

        // 遍历第二个字符串,对计数数组进行相应字母的计数
        for (char c : str2.toCharArray()) {
            counts[c - 'a']--;
        }

        // 比较两个计数数组是否相同
        for (int count : counts) {
            if (count != 0) {
                return false;
            }
        }

        return true;
    }

    public static void main(String[] args) {
        String str1 = "abc";
        String str2 = "cba";

        if (isSamePermutation(str1, str2)) {
            System.out.println("两个字符串是相同的字母排列");
        } else {
            System.out.println("两个字符串不是相同的字母排列");
        }
    }
}

以上两种方法都可以判断两个字符串是否为相同的字母排列,具体使用哪种方法可以根据实际需求进行选择。