牛客算法题——密码验证合格程序

本文介绍了一道关于密码验证的算法题,要求包括长度、字符种类及无重复子串等条件。作者分享了自己使用传统方法解决的思路,并探讨了一位大佬通过正则表达式 `(.{3,}).*1` 简洁高效地解决该问题的方案,表达了对巧妙正则应用的学习心得。" 47132475,5077915,Android RadioGroup 实现单选功能,"['Android开发', '前端开发', '用户界面']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述:

密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有长度大于2的包含公共元素的子串重复 (注:其他符号不含空格或换行)
数据范围:输入的字符串长度满足 1 \le n \le 100 \1≤n≤100
输入描述
一组字符串。
输出描述
如果符合要求输出:OK,否则输出NG
示例1
输入:
021Abc9000
021Abc9Abc1
021ABC9000
021$bc9000
复制
输出:
OK
NG
NG
OK

这是今天刷到的一道算法题,我自己写的程序比较繁琐,并且使用的比较传统暴力的解法,看题解的时候看见了一个大佬的程序:

const list = []
let itm;
while(itm=readline()){
   
    list.push(itm)
### 关于华为牛客算法题目的解析 #### 字符串字符匹配 字符串字符匹配问题是常见的基础算法之一,通常涉及模式匹配、KMP算法等内容。在华为牛客网的相关题目中,可以参考如下实现方式[^1]: ```python def str_match(s, pattern): m, n = len(s), len(pattern) i, j = 0, 0 while i < m and j < n: if s[i] == pattern[j]: j += 1 i += 1 return j == n ``` --- #### 将真分数分解为埃及分数 将真分数分解为埃及分数是一个经典的数学问题,在实际编程中可以通过贪心算法来解决。 ```python from fractions import Fraction def egyptian_fraction(fraction): result = [] f = Fraction(fraction).limit_denominator() numerator, denominator = f.numerator, f.denominator while numerator != 0: x = (denominator + numerator - 1) // numerator result.append(Fraction(1, x)) numerator, denominator = numerator * x - denominator, denominator * x return result ``` --- #### 统计大写字母个数 统计字符串中的大写字母数量属于简单的字符串处理问题,以下是其实现方法[^4]: ```python def count_uppercase(s): count = sum(1 for c in s if 'A' <= c <= 'Z') return count ``` --- #### 合法IP判断 对于合法IP地址的判断,需要考虑IPv4格式的有效性验证逻辑[^5]。 ```python def is_valid_ip(ip): parts = ip.split('.') if len(parts) != 4: return False for part in parts: if not part.isdigit() or not 0 <= int(part) <= 255: return False if len(part) > 1 and part.startswith('0'): return False return True ``` --- #### 密码强度等级 密码强度检测可以根据长度、复杂性和特殊字符的存在情况进行综合评分[^3]。 ```python import re def password_strength(password): score = 0 if len(password) >= 8: score += 1 if re.search(r'[a-z]', password): score += 1 if re.search(r'[A-Z]', password): score += 1 if re.search(r'\d', password): score += 1 if re.search(r'[!@#$%^&*(),.?":{}|<>]', password): score += 1 return score ``` --- #### 注意事项 在参加机考时需要注意代码的原创性,避免因代码相似度过高而被系统判定为作弊行为[^2]。因此,即使熟悉某些经典算法,也应尝试通过调整变量名、优化逻辑等方式降低相似度。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值