华为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
- 华为oj之密码验证合格程序
- 【华为oj】密码验证合格程序
- 华为OJ(密码验证合格程序)
- 华为oj 密码验证合格程序
- 华为OJ 密码验证合格程序
- 密码验证合格程序(华为oj)
- 【华为OJ】【017-密码验证合格程序】
- 【华为 OJ】密码验证合格程序
- 华为oj 密码验证合格程序
- 华为OJ 密码验证合格程序
- 华为oj中级 密码验证合格程序
- 华为OJ密码验证合格程序
- 华为OJ-----密码验证合格程序
- 华为OJ-密码验证合格程序-牛客网
- 华为OJ中级题-密码验证合格程序
- 华为OJ——密码验证合格程序
- 华为OJ——密码验证合格程序
- OJ-----密码验证合格程序
- Hive lateral view语句(翻译自Hive wiki)
- revit二次开发 获取水管的坐标
- Android设计模式(八)--模板方法模式
- Unity3D面试题
- 命令行解析器
- 华为oj之密码验证合格程序
- java权限设计思路之一
- Python--模块
- 黑马程序员——Java基础---集合
- Socket编程的面纱
- 算法和数据结构就是编程的一个重要部分,你若失掉了算法和数据结构,你就把一切都失掉了。
- HDU ACM 4473 Exam->数论(思维-问题转换)
- 倒排索引 和 倒排表
- 9针串口线简介