题解 | #密码验证合格程序#

密码验证合格程序

http://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841

Java解法

用到了一下方法:

's.indexOf(string_s)' 返回对应字符串在s中的下标(可用来判断是否含有某个字符,不存在会返回-1)

'Character.isLetterOrDigit(char_c)' 判断是否是字母或数字

's.substring(index)' 返回从index开始的子串

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		while(in.hasNextLine()) {
			String s = in.nextLine();
			if(s.length()<8) {
				System.out.println("NG");
				continue;
			}
			if(s.indexOf(" ")>=0 || s.indexOf("\n")>=0) {
				System.out.println("NG");
				continue;
			}
			if(isSingle(s)==false) {
				System.out.println("NG");
				continue;
			}
			if(num(s)<3) {
				System.out.println("NG");
				continue;
			}
			System.out.println("OK");
		}
		
	}
	public static int num(String s) {
		int sum=0;
		if(s.toLowerCase()!=s) {
			sum++;
		}
		if(s.toUpperCase()!=s) {
			sum++;
		}
		int flag1=0, flag2=0;
		for(int i=0;i<s.length();i++) {
			char c = s.charAt(i);
			
			if(Character.isDigit(c)==true && flag1==0) {
				sum++;
				flag1=1;
			}else if(Character.isLetterOrDigit(c)==false && s.indexOf(" ")<0 && s.indexOf("\n")<0 && flag2==0) {
				sum++;
				flag2=1;
			}
			if(flag1==1 && flag2==1){
				break;
			}
		}
		return sum;
	}
	
	public static boolean isSingle(String s) {
        for (int i = 3; i < s.length(); i++) {
            if (s.substring(i).contains(s.substring(i - 3, i))) {
                return false;
            }
        }
 
        return true;
    }
}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务