我有一个类来确定2个字符数组中有多少匹配字符。使用 HashSet
contains方法,如果一个字符数组包含第二个数组中的字符,则显示该字符。
问题是如果两个匹配的字符出现在多个位置。
例如,如果 array 1 = adcd
以及 array 2 = a05ddd
, d
出现3次,而不是2次。
我如何修改它来计算正确的字符数?代码生成 "addd"
什么时候应该生产 "add"
对于不正确的字符,结果将是 "a--dd"
```
HashSet hash = new HashSet();
String word1 = "adcd";
String word2 = "a05ddd";
char[] ch1 = word1.toCharArray();
char[] ch2 = word2.toCharArray();
Character character = null;
String charLocation = "";
int count = 0;
for (int i = 0; i < ch1.length; i++)
{
hash.add(ch1[i]);
}
for (int i = 0; i < ch2.length; i++)
{
character = ch2[i];
if (hash.contains(character))
{
charLocation = charLocation + character;
count++;
}
if (!hashSet.contains(character))
correctCharPlacements = correctCharPlacements + "-";
}
1条答案
按热度按时间gxwragnw1#
很可能需要收集有关字符频率的数据,因此应该用一个Map来替换set。然后,可以根据两个词中的公共字符和字符的最小频率来构建结果字符串:
测试:
输出:
更新
作为
String::repeat
可以从Java11开始使用,它可以用Java8兼容的代码替换,使用String::join
+Collections.nCopies
:在线演示:
输出:
更新2
以保持结果中第二个字符串中字符的顺序,并用替换缺少的字符
'-'
,可以实现以下方法:测验
输出: