昨天,参加了人生中第一场面试,见了第一个清华大学毕业生。有一字符串相关的题目当时没有做出来,现在总结一下:题目是求解一个字符串是否是强密码?
需要满足三个条件:
1)长度在6-20
2)至少包含三种类型以上 小写字母,大写字母,数字和其他
3)不能有两个相同的子串。子串的长度》=3
第一问和第二问简单,第三问没想到
实现:
public class StrongPassword {
public static void main(String[] args) {
System.out.println(isStrong("aa1aaAsbas"));
}
public static boolean isStrong(String password){
if (password.length()<6||password.length()>20){
return false;
}
//至少包含三种类型以上,正则表达式
int count=0;
int types[]=new int[4];
for (char c:password.toCharArray()){
if ('0'
types[0]++;
}else if ('a'
types[1]++;
}else if ('A'
types[2]++;
}
else {
types[3]++;
}
}
for (int t:types){
if (t==0){
count++;
}
}
if (count>1){
return false;
}
//不能有两个相同的子串
for (int i=0;i
String subStr=password.substring(i,i+3);
//sunStr将原字符串分为两部分
String subStr1 = password.substring(0,i);
String subStr2 = password.substring(i+1,password.length());
if(subStr1.length()>3){
if (subStr1.indexOf(subStr)!=-1){
return false;
}
}
if (subStr2.length()>3){
if (subStr2.indexOf(subStr)!=-1){
return false;
}
}
}
return true;
}
}









网友评论