华为oj之密码验证合格程序

来源:互联网 发布:163 smtp ssl 端口 编辑:程序博客网 时间:2024/04/28 16:58

密码要求: 

1.长度超过8位 

2.包括大小写字母.数字.其它符号,以上四种至少三种 

3.不能有相同长度超2的子串重复 

判断字符类型时采用位标记,判断重复子串时使用动态规划

import java.util.Scanner;public class Main{public static void main(String[] args){Scanner sc=new Scanner(System.in);while(sc.hasNext()){String pwd=sc.nextLine();if(isok(pwd)){System.out.println("OK");}else {System.out.println("NG");}}sc.close();}public static boolean isok(String pwd){boolean result=false;if(pwd.length()>8)//长度要求大于8{//用一个int型来表示四种类型是否存在,一个用一位int flag=0;//遍历标记类型for(int i=0;i<pwd.length();i++){char tmp=pwd.charAt(i);if(tmp>='a'&&tmp<='z'){flag=flag|8;}else if(tmp>='A'&&tmp<='Z'){flag=flag|4;}else if(tmp>='0'&&tmp<='9'){flag=flag|2;}else{flag=flag|1;}}if((flag&15)==15||(flag&15)==7||(flag&15)==11||(flag&15)==13||(flag&15)==14)//至少存在三种不同类型字符{if(maxSame(pwd)<=2)//不存在长度大于2的相同子串{result=true;}}}return result;}//用动态规划的方法来求字符串中最长的相同子串长度public static int maxSame(String str){int[][] max=new int[str.length()][str.length()];//声明存储空间,只用一个下三角就可以了,代表从i开始与从j开始的子串与多长相同int maxlen=0;//处理初始值for(int i=0;i<str.length()-1;i++){if(str.charAt(i)==str.charAt(str.length()-1)){max[i][str.length()-1]=1;maxlen=1;}}//递推关系为,若str.charAt(i)==str.charAt(j)则max[i][j]=max[i+1][j+1]+1,否则max[i][j]=0for(int j=str.length()-2;j>0;j--)//从下向上从右向左遍历下三角{for(int i=j-1;i>=0;i--){if(str.charAt(i)==str.charAt(j)){max[i][j]=max[i+1][j+1]+1;//更新最长相同长度if(max[i][j]>maxlen){maxlen=max[i][j];}}else {max[i][j]=0;}}}return maxlen;}}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 华迈净水器漏水怎么办 超限超载告知书怎么办 辽宁省荣复军人怎么办 加载失败网页打不开怎么办 整容证明开不了怎么办 无法开整容证明怎么办 整容后换身份证怎么办 换身份证了驾照怎么办 网易云安装不了怎么办 上网站看不到东西怎么办 电脑显示应用程序错误怎么办 电脑出现应用程序错误怎么办 老师教错了怎么办 老师不让坐位上怎么办 老师问学生家长借钱怎么办 学生向老师借钱怎么办 老师向家长借钱怎么办 癌症身上很痒怎么办 花生地有老鼠怎么办 国企不涨工资怎么办 mpacc写作写不好怎么办 宝宝惊着了怎么办 半夜到昆明机场怎么办 离婚了老公纠缠怎么办 网络写手侵权怎么办 etc卡不能用怎么办 在海上遇到大浪怎么办 数学太差了怎么办 四年级数学成绩差怎么办 小学科学成绩差怎么办 小学科学成绩不好怎么办 高中数理化学不好怎么办 初中生长痘痘怎么办 怎么办朱杰mp3微盘 摄像机镜头起雾怎么办 显卡风扇声音大怎么办 卧室灯不在中间怎么办 小龙头发乱了怎么办 孩子头睡平了怎么办 一只眼失明找不到工作怎么办 幼儿园的小朋友不听话怎么办