我想检查每个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如果我使用等于它将无法正常工作
答案 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”的字符相同吗?是