每周一课:L90 Tasks from Indeed Prime

作者: AiFany | 来源:发表于2019-02-26 14:53 被阅读4次
    0.png
    P90.1 LongestPassword

    Given a string containing words, find the longest word that satisfies specific conditions.

    • P90.1 最长密码
      给定一个包含密码的字符串,找到符合条件的密码中长度最长的

    要为银行帐户设置密码。但是,只有满足下面3个条件的密码才是有效的:

    1. 它只能包含字母和数字,例如(A−Z、A−Z、0−9);

    2. 字母的个数为偶数;

    3. 数字的个数为奇数;

    一个由N个字符组成的字符串S。字符串中的密码以空格来划分,目标是选择有效的密码中最长的。如果字符串S中有k个空格,那么说明正好有K+1个密码。

    例如,给定字符串“test 5 a0A pass007 ?xy1“,共有5个密码,但是其中只有3个是有效的密码:“5”、“a0A”和“pass007”。因此最长的密码是“pass007”,其长度是7。注意,密码“?xy1”中因为“?”不是字母或数字,“test”中包含偶数(0)个数字,所以均不是有效的。

    编写函数:

    def solution(S)
    

    给定由N个字符组成的非空字符串S,则返回有效密码中长度最长的。如果不存在有效的密码,函数应该返回−1。例如,针对上面的示例,函数应该返回7。

    假定:

    1. N是区间[1,200]内的整数;
    2. 字符串S仅由ASCII字符和空格组成。
    • 解题思路
      利用Python的函数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)
    
    • 结果
    image

    点击获得更多编程练习题。欢迎Follow,感谢Star!!! 扫描关注微信公众号pythonfan,获取更多。

    image image

    相关文章

      网友评论

        本文标题:每周一课:L90 Tasks from Indeed Prime

        本文链接:https://www.haomeiwen.com/subject/orvayqtx.html