题目
华为机试题目:
主要对输入的密码按照以下的规则进行校验;符合要求返回OK,否则返回NG。
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有相同长度超2的子串重复
实现
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner in = new Scanner(System.in);
Main test = new Main();
while(in.hasNext()){
String psd = in.nextLine();
if(test.isValidate(psd)){
System.out.println("OK");
}else{
System.out.println("NG");
}
}
}
public boolean isValidate(String string){
int len = string.length();
int isContainUpperCase = 0;
int isContainLowerCase = 0;
int isContainNumber = 0;
int isContainOther =0;
for(int i = 0;i <len;i++){
if(i<len-2){
for(int j = i+1;j<len-2;j++){
if (string.substring(i, i + 3).equals(string.substring(j, j + 3))) {
return false;
}
}
}
char temp = string.charAt(i);
if(temp>='A' && temp<='Z'){
isContainUpperCase = 1;
}else if(temp>='a' && temp<='z'){
isContainLowerCase = 1;
}else if(temp>='0' && temp<='9'){
isContainNumber = 1;
}else
isContainOther = 1;
}
int sum = isContainLowerCase+isContainNumber+isContainOther+isContainUpperCase;
if( len>8 && sum>=3)
return true;
else
return false;
}
}
测试用例
^Awsl7w222*hV
0p^6#HJ5v4@3zxQv#~1q85
$5^$q6
s*z8F1O~7~3%83~y46~6&5w15)F46-7483
z(9Zh+$ZT*8(9c9&P202*CFM
pYr71#@nG5@)
8#I682T090!32gth&Wl)O*!H-&-%$En^2*3S$-
w3214(08$*o*7j$I-6!5$1b90974b25)p550#D*)@^SU%
W(4+1Q2#*&*aX3+02ig8m
W!8nDUP0l$m6!k1en8)j4-JQ+
5o04ac-l#$-eM021$6*66n9b#o7d06~)^f4
6~@
Yw-09-Q78G**81O&J210
))20Uq%0
L83M!g!$~!7&u2B-#ovw~7LKRz5+!
!3^@^%45*892nv&50~0S6e2y9U!&i~8iWu2K8z
~32@M#
3&!8-~6c1-0l#!ommNW%2dJ6U)0JmdR@586!7#+4+-e^)2$
++^(348~8N^d$19@2GU3&(3$07i@tt1#)S-*6!(+!34u
$y2*+@^7w8~4^0+EN7%1#n94Fpdb4&
55
a
R!g9FpT78$F8WAq~!#(491#F67bf*23X6^48Q
00W^20&+L$+B&tH!12^%))4@3F^*OVK(6l6#%27ja
(-%&5Et6-2n&%#Tk38(iz&0A7qa8u9((
&-4d3$)9&9nMA3@%J0@#~X8wi17kv1V*88%9X2$h+R3@#5v
b225H04-!~33#
31L$(!i2^8m$2^p
p3L^04Pg5923!2$$9pE&009Kjm&1d5(
r-^$t6@9O)ReC(8^7b9!T-g0+y+5!
n6$++Us66h20!E61$%E%3gMw#-0!
^-$ezL%-$30k2plAN9+i8544$B-($aS611#H*0
*+5B459-u17&s9$6JRJ@%MD07-5^03^806SN44I@$(*y5-~$2(
05ag
-CUuJ5Pg39~Wby@^$093Y)kdQ8&Zg51*
)-q4(@~l~)ATN
)37^%%
验证结果
OK
OK
NG
OK
OK
OK
OK
OK
OK
OK
OK
NG
OK
NG
OK
OK
NG
OK
OK
OK
NG
NG
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
NG
OK
OK
NG