比较两个字符串中的字符

时间:2018-10-25 15:11:28

标签: java arrays string compareto

我想检查每个String中的字符是否相同,我能否构建另一个给定的String  从第一个字符串中的字符开始。例如,我有随机字符串=“ amksomsamk”,我必须将其与另一个“ askommmaks”进行比较。

首先我写一个检查长度的方法

     public boolean areEquals(String s1, String s2){
        if (s1.toCharArray().length == s2.toCharArray().length){
            return true;
        }else
            return false;

现在我想以可能的简单方式检查每个字符。 我将感谢您的帮助

PS。 对于给定的示例,我希望得到真实的回报,因为此特定字符串中的字符相同。 amksomsamk a:2 m:3 k:2 s:2 o:1 askommmaks a:2 m:3 k:2 s:2 o:1如果我使用等于它将无法正常工作

3 个答案:

答案 0 :(得分:2)

将每个String转换为char[]

char[] str1 = s1.toCharArray();
char[] str2 = s2.toCharArray();

将每个char[]

排序
Arrays.sort(str1);
Arrays.sort(str2);

检查是否相等

return Arrays.equals(str1, str2);

答案 1 :(得分:0)

您可以使用以下功能进行比较:

public boolean isEqual(String s1, String s2) {
    if (s1.length() != s2.length())
        return false;

    Map<Character, Integer> charsCountMap = getCharsByCount(s1);


    for (char c : s2.toCharArray()) {
        if (charsCountMap.get(c) == null)
            return false;

        charsCountMap.put(c, charsCountMap.get(c) - 1);
    }

    return charsCountMap.values().stream()
            .allMatch(count -> count == 0);
}

private Map<Character, Integer> getCharsByCount(String s) {
    Map<Character, Integer> charsCountMap = new HashMap<>(s.length());

    for (char c : s.toCharArray())
        charsCountMap.put(c, charsCountMap.getOrDefault(c, 0) + 1);

    return charsCountMap;
}

答案 2 :(得分:0)

使用StringBuilder字符串进行递归可以提供一种简洁的解决方案,尽管很难理解代码:

.FirstOrDefault()

这是输出:

  

“☆★世界你dbbbZZ❸”和“ Zb☆b界b★世d❸你Z”的字符相同吗?是