華爲OJ 密碼驗證合格程序

import java.util.*;
/*
 * .長度超過8位
 
 
 
2.包括大小寫字母.數字.其它符號,以上四種至少三種
 
 
 
3.不能有相同長度超2的子串重複
 

 */

//解題思路:只需要按要求一步一步來就行,我用的最笨的方法,其中在驗證字符重複時,使用的兩層循環,第二層循環就開始查看有沒有與第一層相同的字符,如果有的話,一個while,直到沒有相同的結束,此時看共多少個一樣的,如果超過兩個就是NG.



import java.util.*;
public class huiwen{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String s=null;
int len=0;
boolean re=true;
while(sc.hasNext()){
s=sc.nextLine();

len=s.length();

//判斷這個串是否正確

re=pim(s);
if(re)
System.out.println("OK");
else
System.out.println("NG");


}

}

//判斷串函數

public static boolean pim(String s){
int len=s.length();

int[] a = new int[4];

//先驗證長度

if(len<=8)

return false;

//然後驗證至少三種字符

for(int i=0;i<len;i++){
if(s.charAt(i)>='0'&&s.charAt(i)<='9')
a[0]=1;
else if(s.charAt(i)>='A'&&s.charAt(i)<='Z')
a[1]=1;
else if(s.charAt(i)>='a'&&s.charAt(i)<='z')
a[2]=1;
else
a[3]=1;
}
int count=0;
for(int i=0;i<4;i++)
if(a[i]==1)
count++;
if(count<3)
return false;

else{

//再驗證是否重複大於2

for(int i=0;i<len;i++)
for(int j=i+1;j<len;j++){
if(s.charAt(j)==s.charAt(i)){
int k;
for(k=0;k<len-j;k++){
if(s.charAt(j+k)!=s.charAt(i+k))
break;
}
if(k>2)
return false;
}
}
}
return true;

}
}
發佈了37 篇原創文章 · 獲贊 4 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章