日常刷题(4)

今天的题过于简单了或者就是写着很没意思

1. 单词加密

1.1. 题目描述

1、输入一个英文句子,句子中包含若干个单词,每个单词间有一个空格;

2、需要将句子中的每个单词按照要求加密输出。

要求:

1)单词中包括元音字符(‘aeuio’、‘AEUIO’,大小写都算),则将元音字符替换成‘*’

2)单词中不包括元音字符,将单词首尾字符进行对换

1.2. 输入描述

输入只有一行,包含一个长度都不超过100的字符串,表示英文句子。

1.3. 输出描述

输出只有一行,即按要求输出加密处理后的英文句子

1.4. 用例

输入 Hello world
输出 H*ll* w*rld

1.5. 代码

import re

def encrypt1(string: str) -> str:
	ans = ''
	for word in string.split():
		ans += word[-1] + word[1:-1] + word[0] + ' '
	return ans.strip()

def encrypt2(string:  str) -> str:
	return re.sub(r'[aeiou]', '*', string, flags=re.IGNORECASE)

def solution(words: str) -> str:
	ans = ''
	for word in words.split():
		if re.match(r'[aeiou]', string, flags=re.IGNORECASE):
			ans += word[-1] + word[1:-1] + word[0] + ' '
		else:
			ans += re.sub(r'[aeiou]', '*', string, flags=re.IGNORECASE) + ' '
	return ans.strip()

2. 单词接龙

2.1. 题目描述

单词接龙的规则是:

可用于接龙的单词首字母必须要前一个单词的尾字母相同;
当存在多个首字母相同的单词时,取长度最长的单词,如果长度也相等,则取字典序最小的单词;已经参与接龙的单词不能重复使用。
现给定一组全部由小写字母组成单词数组,并指定其中的一个单词作为起始单词,进行单词接龙,
请输出最长的单词串,单词串是单词拼接而成,中间没有空格。

2.2. 输入描述

输入的第一行为一个非负整数,表示起始单词在数组中的索引K,0 <= K < N ;
输入的第二行为一个非负整数,表示单词的个数N;
接下来的N行,分别表示单词数组中的单词。
备注:

单词个数N的取值范围为[1, 20];
单个单词的长度的取值范围为[1, 30];

2.3. 输出描述

输出一个字符串,表示最终拼接的单词串。

2.4. 用例

  • 输入
    0
    6
    word
    dd
    da
    dc
    dword
    d
  • 输出
    worddwordda
  • 说明
    先确定起始单词word,再接以d开头的且长度最长的单词dword,剩余以d开头且长度最长的有dd、da、dc,则取字典序最小的da,所以最后输出worddwordda。

  • 输入
    4
    6
    word
    dd
    da
    dc
    dword
    d
  • 输出
    dwordda
  • 说明
    先确定起始单词dword,剩余以d开头且长度最长的有dd、da、dc,则取字典序最小的da,所以最后输出dwordda。

2.5. 代码

def solution(words):
    ans = words[0]
    words.remove(words[0])
    while True:
        candidate = [(-len(word), word) for word in words if word.startswith(ans[-1])]
        candidate.sort()
        if not candidate:
            break

        words.remove(candidate[0][-1])
        ans += candidate[0][-1]
    return ans

3. 单词重量

3.1. 题目描述

每个句子由多个单词组成,句子中的每个单词的长度都可能不一样,我们假设每个单词的长度Ni为该单词的重量,你需要做的就是给出整个句子的平均重量V。

3.2. 输入描述

3.3. 输出描述

3.4. 用例

输入 Who Love Solo
输出 3.67
说明 无

3.5. 代码

def solution(sentence):
    cnt_sentence = len(sentence.split())
    return (len(sentence) - cnt_sentence) / cnt_sentence

4.德州扑克

4.1. 题目描述

五张牌,每张牌由牌大小和花色组成,牌大小2~10、J、Q、K、A,牌花色为红桃、黑桃、梅花、方块四种花色之一。

判断牌型:

牌型1,同花顺:同一花色的顺子,如红桃2红桃3红桃4红桃5红桃6。
牌型2,四条:四张相同数字 + 单张,如红桃A黑桃A梅花A方块A + 黑桃K。
牌型3,葫芦:三张相同数字 + 一对,如红桃5黑桃5梅花5 + 方块9梅花9。
牌型4,同花:同一花色,如方块3方块7方块10方块J方块Q。
牌型5,顺子:花色不一样的顺子,如红桃2黑桃3红桃4红桃5方块6。
牌型6,三条:三张相同+两张单。

说明:

(1)五张牌里不会出现牌大小和花色完全相同的牌。
(2)编号小的牌型较大,如同花顺比四条大,依次类推。
(3)包含A的合法的顺子只有10 J Q K A和A 2 3 4 5;类似K A 2 3 4的序列不认为是顺子。

4.2. 输入描述

输入由5行组成,每行为一张牌大小和花色,牌大小为2~10、J、Q、K、A,花色分别用字符H、S、C、D表示红桃、黑桃、梅花、方块。

4.3. 输出描述

输出牌型序号,5张牌符合多种牌型时,取最大的牌型序号输出。

4.4. 用例

  • 输入
    4 H
    5 S
    6 C
    7 D
    8 D
  • 输出
    5
  • 说明
    4 5 6 7 8构成顺子,输出5

  • 输入
    9 S
    5 S
    6 S
    7 S
    8 S
  • 输出
    1
  • 说明
    既是顺子又是同花,输出1,同花顺
  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值