苏大计算机上机题目推荐

 

目录

苏州大学计算机复试上机【字符串/数组类习题】【PAT和LeetCode习题】

PAT

1028 人口普查 (20分)

某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。

这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 200 岁的老人,而今天是 2014 年 9 月 6 日,所以超过 200 岁的生日和未出生的生日都是不合理的,应该被过滤掉。

输入格式:

输入在第一行给出正整数 N,取值在(0,105];随后 N 行,每行给出 1 个人的姓名(由不超过 5 个英文字母组成的字符串)、以及按 yyyy/mm/dd(即年/月/日)格式给出的生日。题目保证最年长和最年轻的人没有并列。

输出格式:

在一行中顺序输出有效生日的个数、最年长人和最年轻人的姓名,其间以空格分隔。

输入样例:

5
John 2001/05/12
Tom 1814/09/06
Ann 2121/01/30
James 1814/09/05
Steve 1967/11/20

输出样例:

3 Tom John

代码:

# -*- coding: utf-8 -*-
def solve():
    n = int(input())
    count = 0
    res = []
#    datas = [('John', '2001/05/12'), ('Tom', '1814/09/06'), ('Ann', '2121/01/30'), ('James', '1814/09/05'), ('Steve', '1967/11/20')]
    for i in range(n):
        elem = input().split()
        if '1814/09/06' <= elem[1] <= '2014/09/06':
           res.append(elem) 
           count += 1       
    res.sort(key=lambda x:x[1])

    if res:
        print(count, res[0][0], res[-1][0])
    else:
        print('0')
    
solve()

1029 旧键盘 (20分)

旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。

输入格式:

输入在 2 行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过 80 个字符的串,由字母 A-Z(包括大、小写)、数字 0-9、以及下划线 _(代表空格)组成。题目保证 2 个字符串均非空。

输出格式:

按照发现顺序,在一行中输出坏掉的键。其中英文字母只输出大写,每个坏键只输出一次。题目保证至少有 1 个坏键。

输入样例:

7_This_is_a_test
_hs_s_a_es

输出样例:

7TI

代码:

# -*- coding: utf-8 -*-

def solve():
    right = input().lower()
    wrong = input().lower()
    
    s1, s2 = set(right), set(wrong)
    out = list(s1 - s2)
    
    output = [[right.index(letter), letter] for letter in out]
    output.sort()
    
    olen = len(output)
    res = [str(output[i][1]) for i in range(olen)]
    
    print(''.join(res).upper())
    
solve()

1078 字符串压缩与解压 (20分)

文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一个连续的片段用这个字符和片段中含有这个字符的个数来表示。例如 ccccc 就用 5c 来表示。如果字符没有重复,就原样输出。例如 aba 压缩后仍然是 aba

解压方法就是反过来,把形如 5c 这样的表示恢复为 ccccc

本题需要你根据压缩或解压的要求,对给定字符串进行处理。这里我们简单地假设原始字符串是完全由英文字母和空格组成的非空字符串。

输入格式:

输入第一行给出一个字符,如果是 C 就表示下面的字符串需要被压缩;如果是 D 就表示下面的字符串需要被解压。第二行给出需要被压缩或解压的不超过 1000 个字符的字符串,以回车结尾。题目保证字符重复个数在整型范围内,且输出文件不超过 1MB。

输出格式:

根据要求压缩或解压字符串,并在一行中输出结果。

输入样例 1:

C
TTTTThhiiiis isssss a   tesssst CAaaa as

输出样例 1:

5T2h4is i5s a3 te4st CA3a as

输入样例 2:

D
5T2h4is i5s a3 te4st CA3a as10Z 

输出样例 2:

TTTTThhiiiis isssss a   tesssst CAaaa asZZZZZZZZZZ

代码:

# -*- coding: utf-8 -*-
import re

def solve():
    j = input()
    if j == 'C':      # 压缩
        data = input()
        data = [i+j for i,j in re.findall(r'([a-zA-Z\s])(\1*)', data)]  # 注意:r''不能少
        res = ''
        for elem in data:
            res += str(len(elem))+elem[0] if len(elem) > 1 else elem[0]
        print(res)
    else:             # 解压
        data = input()
        data = re.findall('(\d*)([a-zA-Z\s])', data)
        res = ''
        for length, elem in data:
            if length == '':
                res += elem
            else:
                res += int(length)*elem
        print(res)
    
solve()

1081 检查密码 (15分)

本题要求你帮助某网站的用户注册模块写一个密码合法性检查的小功能。该网站要求用户设置的密码必须由不少于6个字符组成,并且只能有英文字母、数字和小数点 .,还必须既有字母也有数字。

输入格式:

输入第一行给出一个正整数 N(≤ 100),随后 N 行,每行给出一个用户设置的密码,为不超过 80 个字符的非空字符串,以回车结束。

输出格式:

对每个用户的密码,在一行中输出系统反馈信息,分以下5种:

  • 如果密码合法,输出Your password is wan mei.
  • 如果密码太短,不论合法与否,都输出Your password is tai duan le.
  • 如果密码长度合法,但存在不合法字符,则输出Your password is tai luan le.
  • 如果密码长度合法,但只有字母没有数字,则输出Your password needs shu zi.
  • 如果密码长度合法,但只有数字没有字母,则输出Your password needs zi mu.

输入样例:

5
123s
zheshi.wodepw
1234.5678
WanMei23333
pass*word.6

代码:

# -*- coding: utf-8 -*-
import re

def solve():
    n = int(input())
    i = 0  
    for i in range(n):
#        密码必须由不少于6个字符组成,并且只能有英文字母、数字和小数点 . ,还必须既有字母也有数字
        pwd = input()   
    
        plen = len(pwd)
        sign = re.findall('[^0-9a-zA-Z.]', pwd)     # 存在不合法字符
        num = re.findall('[0-9]', pwd)              # 是否只有字母
        alpha = re.findall('[a-zA-Z]', pwd)         # 是否只有数字  
        if plen < 6:
            print("Your password is tai duan le.")
        elif sign:
            print("Your password is tai luan le.")
        elif num == []:
            print("Your password needs shu zi.")
        elif alpha == []:
            print("Your password needs zi mu.")
        else:
            print("Your password is wan mei.")
            
solve()

1043 输出PATest (20分)

给定一个长度不超过 104 的、仅由英文字母构成的字符串。请将字符重新调整顺序,按 PATestPATest.... 这样的顺序输出,并忽略其它字符。当然,六种字符的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按 PATest 的顺序打印,直到所有字符都被输出。

输入格式:

输入在一行中给出一个长度不超过 104 的、仅由英文字母构成的非空字符串。

输出格式:

在一行中按题目要求输出排序后的字符串。题目保证输出非空。

输入样例:

redlesPayBestPATTopTeePHPereatitAPPT

输出样例:

PATestPATestPTetPTePePee

代码:

# -*- coding: utf-8 -*-
def solve():
    data = input()
    dlen = len(data)
    
    res = ''
    pattern = 'PATest'
    for i in range(dlen):
        for m in pattern:
   
  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值