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

密码验证合格程序

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


import java.util.Scanner

fun main(args: Array<String>) {
    val sc = Scanner(System.`in`)
    while (sc.hasNext()) {
        val str = sc.next()
        if (str.length <= 8) {
            println("NG")
            continue
        }
        if (getMatch(str)) {
            println("NG")
            continue
        }
        if (getString(str, 0, 3)) {
            println("NG")
            continue
        }
        println("OK")
    }
}

// 校验是否有重复子串
tailrec fun getString(str: String, l: Int, r: Int): Boolean {
    return if (r >= str.length) {
        false
    } else if (str.substring(r).contains(str.substring(l, r))) {
        true
    } else {
        getString(str, l + 1, r + 1)
    }
}

// 检查是否满足正则
fun getMatch(str: String): Boolean {
    var count = 0

    if (str.count { it.isUpperCase() } > 0) {
        count++
    }
    if (str.count { it.isLowerCase() } > 0) {
        count++
    }
    if (str.count { it.isDigit() } > 0) {
        count++
    }
    if (str.count { !(it.isDigit() && it.isLowerCase() && it.isUpperCase()) } > 0) {
        count++
    }
    return count < 3
}

#kotlin#
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-11 11:29
点赞 评论 收藏
分享
昨天 13:37
重庆大学 C++
点赞 评论 收藏
分享
弦五Strings:他之所以会举报你代课是因为在这种人眼里正常上课就是正义代课就是邪恶,典型二极管思维,处理方法就是私下沟通,你就说你自己家里经济困难或者家里父母生病什么之类的,需要去打工挣钱,用尽孝的正义对冲他认为的上课的正义,他可能就妥协了。
我的实习日记
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务