0.png
P90.1 LongestPassword
Given a string containing words, find the longest word that satisfies specific conditions.
-
P90.1 最長密碼
給定一個包含密碼的字符串瞳筏,找到符合條件的密碼中長度最長的
要為銀行帳戶設(shè)置密碼簸呈。但是滤否,只有滿足下面3個條件的密碼才是有效的:
它只能包含字母和數(shù)字,例如(A?Z虏等、A?Z、0?9)蝠引;
字母的個數(shù)為偶數(shù)轻绞;
數(shù)字的個數(shù)為奇數(shù);
一個由N個字符組成的字符串S窿春。字符串中的密碼以空格來劃分拉一,目標是選擇有效的密碼中最長的采盒。如果字符串S中有k個空格,那么說明正好有K+1個密碼蔚润。
例如磅氨,給定字符串“test 5 a0A pass007 ?xy1“,共有5個密碼嫡纠,但是其中只有3個是有效的密碼:“5”烦租、“a0A”和“pass007”。因此最長的密碼是“pass007”除盏,其長度是7叉橱。注意,密碼“?xy1”中因為“?”不是字母或數(shù)字者蠕,“test”中包含偶數(shù)(0)個數(shù)字窃祝,所以均不是有效的。
編寫函數(shù):
def solution(S)
給定由N個字符組成的非空字符串S踱侣,則返回有效密碼中長度最長的粪小。如果不存在有效的密碼,函數(shù)應(yīng)該返回?1泻仙。例如糕再,針對上面的示例,函數(shù)應(yīng)該返回7玉转。
假定:
- N是區(qū)間[1突想,200]內(nèi)的整數(shù);
- 字符串S僅由ASCII字符和空格組成究抓。
-
解題思路
利用Python的函數(shù)ord來判斷密碼的字符是否符合條件猾担。 - Python3代碼
-*- coding:utf-8 -*-
# &Author AnFany
# Lesson 90:Tasks from Indeed Prime 2015 challenge
# P 90.1 LongestPassword
def solution(S):
"""
返回字符串S中符合條件的最長的字符串長度
:param S: 字符串
:return: 最長字符串的長度
"""
split_list = S.split(' ')
print(split_list)
lower = list(range(ord('a'), ord('z')+1))
upper = list(range(ord('A'), ord('Z')+1))
digit = list(range(ord('0'), ord('9')+1))
str_length = []
for i in split_list:
sign = 1
alpha = 0
number = 0
for h in i:
if ord(h) in lower or ord(h) in upper:
alpha += 1
elif ord(h) in digit:
number += 1
else:
sign = 0
break
if sign:
if not alpha % 2 and number % 2:
str_length.append(len(i))
if len(str_length) == 0:
return -1
else:
return max(str_length)
- 結(jié)果
image
點擊獲得更多編程練習(xí)題。歡迎Follow刺下,感謝Star!!! 掃描關(guān)注微信公眾號pythonfan绑嘹,獲取更多。
image
image