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;

}

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容