2018-12-08

昨天,参加了人生中第一场面试,见了第一个清华大学毕业生。有一字符串相关的题目当时没有做出来,现在总结一下:题目是求解一个字符串是否是强密码?

需要满足三个条件:

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;

}

}

你可能感兴趣的:(2018-12-08)