我需要编写一个函数来检查字符串中的重复值并返回唯一字符数。如果计数大于 3,它应该返回 true。如果计数小于 3,则它应该是假的。这是我一直在尝试的(注意我是 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
计数发生的次数。
关于Java - 如何检查字符串中的重复字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7931012/