【发布时间】:2011-12-17 09:02:49
【问题描述】:
我需要编写一个函数来检查字符串中的重复值并返回唯一字符的计数。如果计数大于 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);
}
}
我觉得这甚至不是正确的......
【问题讨论】:
-
我会简单地循环并按照您的方式使用字符串 indexOf 函数。如果你想使用正则表达式,你可以编写一个只需要对字符串使用一次的正则表达式。
-
该问题要求提供唯一字符的数量,但代码似乎试图计算重复项....我只是读错了吗??
-
G_H - 幸好这不是家庭作业。我是一名初学者,尝试通过一些书籍和论坛自学 JAVA。
-
Matt - 你没有读错代码。我试图使用检查字符串长度的方法并将其与重复的数量进行比较,差异将是唯一字符的数量。但是现在它已经关闭了,这似乎过于复杂了。
标签: java regex string function duplicates