题解 | 密码验证合格程序
import java.util.*; import java.util.regex.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while(in.hasNext()){ String str=in.next(); if(str.length()<=8){ System.out.println("NG"); continue; } if(getMatch(str)){ System.out.println("NG"); continue; } if(getString(str,0,3)){ System.out.println("NG"); continue; } System.out.println("OK"); } } //检查是否有重复子串 private static boolean getString(String str,int l,int r){ if(r>=str.length())//先判断长度 return false; if(str.substring(r).contains(str.substring(l,r)))//检查r后面是否含有l和r return true; else return getString(str,l+1,r+1); } //检查是否具有正则性 private static boolean getMatch(String str){ int count=0; Pattern p1=Pattern.compile("[A-Z]"); if(p1.matcher(str).find()){ count++; } Pattern p2=Pattern.compile("[a-z]"); if(p2.matcher(str).find()){ count++; } Pattern p3=Pattern.compile("[0-9]"); if(p3.matcher(str).find()){ count++; } Pattern p4=Pattern.compile("[^a-zA-Z0-9]"); if(p4.matcher(str).find()){ count++; } if(count>=3){ return false; }else return true; } }
- 新学习到的正则表达式
Pattern p1=Pattern.compile("");
p1.matcher(str).find()