HJ20 密码验证合格程序
题目描述
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有长度大于2的包含公共元素的子串重复 (注:其他符号不含空格或换行)
示例
输入
021Abc9000
021Abc9Abc1
021ABC9000
021$bc9000
输出
OK
NG
NG
OK
思路
前两个条件简单,第三个条件,不能有长度>2的公共子串,这里我第一反应是校验是否有长度为3的子串、长度为4的子串……长度为n-1的子串,但是没什么办法。看了一眼题解才发现只考虑是否有长度为3的公共子串即可,而如果有长度大于3的公共子串时,必然是包含长度等于3的子串,所以只需要考虑这一种情况。
知识点:
- 使用
int pos = s.rfind(s.substr(i, 3));
方法从后向前查找字符串
Code
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58