程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python的split()方法妙用

編輯:Python

例如ACM模式下一道密碼合格驗證的算法題:
題目:
密碼要求:

1.長度超過8位
2.包括大小寫字母.數字.其它符號,以上四種至少三種
3.不能有長度大於2的包含公共元素的子串重復 (注:其他符號不含空格或換行)
數據范圍:輸入的字符串長度滿足 1 \le n \le 100 \1≤n≤100
輸入描述:
一組字符串。
輸出描述:
如果符合要求輸出:OK,否則輸出NG

示例:

輸入
021Abc9000
021Abc9Abc1
021ABC9000
021$bc9000
輸出
OK
NG
NG
OK

代碼:

def check(s):
if len(s) <= 8:
return 0
a, b, c, d = 0, 0, 0, 0
for item in s:
if ord('a') <= ord(item) <= ord('z'):
a = 1
elif ord('A') <= ord(item) <= ord('Z'):
b = 1
elif ord('0') <= ord(item) <= ord('9'):
c = 1
else:
d = 1
if a + b + c + d < 3:
return 0
for i in range(len(s)-3): # 檢查是否存在三個字符以上的重復子串
if len(s.split(s[i:i+3])) >= 3: # 此處進行子串重復判斷
return 0
return 1
while 1:
try:
print('OK' if check(input()) else 'NG')
except:
break

分析:s.split(s[i:i+3])用的較好。
021Abc9Abc1,該字符串經s.split(s[i:i+3])處理後為[‘021’, ‘9’, ‘1’],因此存在三個字符以上的重復子串。
注意:同理,輸入021AbcAbc1,[‘021’, ‘’, ‘1’],也可檢查出三個字符以上的重復子串。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved