我需要编写一个函数来检查字符串中是否有重复值并返回唯一字符的计数。如果计数大于 3,则应返回 true。如果计数小于 3,则应该为 false。这是我一直在尝试的(注意我是java新手)
private boolean isFormatValid(String password) {
CharSequence inputStr = password;
int length = inputStr.length();
int numberDups = 0;
for(int i=0; i < length; ++i) {
Pattern pattern = Pattern.compile("(.)(?=.*?\1){1,20}");
Matcher matcher = pattern.matcher(inputStr);
numberDups += 1;
}
if (numberDups < 3) {
return false;
}
return true;
}
我尝试使用正则表达式,因为有人建议它可能更容易。但如果我能在不使用正则表达式的情况下完成此任务,我会更高兴。
是这个意思吗?
private boolean isFormatValid(String password) {
int length = inputStr.length();
int numberChars = 0;
for(int i=0; i < length; ++i) {
int index = password.indexOf(i);
CharArray[i] = charAt(i);
}
}
我觉得这根本就不是正确的......
你已经差不多了。您可以使用索引,而不是使用正则表达式:i
索引到String
并使用读取特定字符charAt(int)
.
然后,您需要一个数据结构来跟踪每个字符出现的次数。我建议使用HashMap
为此,地图键是Character
您已阅读过,地图值是Integer
出现次数的计数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)