实现对字符串进行校验的功能,校验规则如下: a)字符串长度必须超过10。 b)字符串必须包含大小写字母、数字、其他字符(不包括运算符)中至少3种。 c)字符串必须以字母开头。 d)字符串中不能存在长度超过3的重复子串。 用java实现
时间: 2024-05-08 09:18:59 浏览: 14
好的,您的问题是实现对字符串进行校验的功能,校验规则如下:
a)字符串长度必须超过10。
b)字符串必须包含大小写字母、数字、其他字符(不包括运算符)中至少3种。
c)字符串必须以字母开头。
d)字符串中不能存在长度超过3的重复子串。
以下是 Java 代码实现:
```
import java.util.HashSet;
public class StringValidator {
public static boolean validate(String str) {
// 校验长度
if (str.length() <= 10) {
return false;
}
HashSet<Character> set = new HashSet<>(); // 用 set 存储字符串中出现的字符
int duplicateCount = 1;
char prev = str.charAt(0);
set.add(prev);
for (int i = 1; i < str.length(); i++) {
char curr = str.charAt(i);
// 校验是否包含至少3种字符
if (!set.contains(curr)) {
set.add(curr);
}
// 校验重复子串
if (curr == prev) {
duplicateCount++;
} else {
duplicateCount = 1;
}
if (duplicateCount > 3) {
return false;
}
prev = curr;
}
// 校验以字母开头
if (!Character.isLetter(str.charAt(0))) {
return false;
}
// 校验是否包含至少3种字符
if (set.size() < 3) {
return false;
}
return true;
}
}
```
这个代码使用了一些技巧来实现校验规则。首先,我们用一个 set 来存储字符串中出现的字符,然后每次遍历字符串时,将当前字符加入到 set 中。如果最终 set 中的元素个数小于 3,则说明字符串不符合校验规则。
另外,我们还用一个变量 duplicateCount 来记录当前字符连续出现的次数。如果连续出现的次数超过了 3 次,则说明字符串中存在重复子串,不符合校验规则。
最后,我们在遍历字符串时,同时进行各种校验,如果出现任何一条校验不符合要求,则直接返回 false。如果全部校验通过,则返回 true。
相关推荐
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)