如何给网站做宣传,中企动力值不值得入职,南宁企业自助建站,单页导航网站模板一、Python 一班
1. 比较字符串
1.1 问题描述
比较两个字符串A和B#xff0c;字符串A和B中的字符都是大写字母#xff0c;确定A中是否包含B中所有的字符。
1.2 问题示例
例如#xff0c;给出AABCD#xff0c;BACD#xff0c;返回True#x…一、Python 一班
1. 比较字符串
1.1 问题描述
比较两个字符串A和B字符串A和B中的字符都是大写字母确定A中是否包含B中所有的字符。
1.2 问题示例
例如给出AABCDBACD返回True给出AABCDBAABC返回False。
1.3 问题提示
先统计字符串A中的字符以及字符的个数。再从B中查找字符如果出现A中对应字符为 0则可认为A中不包含B字符串。不能使用循环嵌套。
1.4 编码实现
a ABCD
b ACD
table [0 for _ in range(26)]
res True
for c in a:if table[ord(c) - 65] 0:table[ord(c) - 65] 1else:table[ord(c) - 65] 1
for c in b:if table[ord(c) - 65] 0:res Falseelse:table[ord(c) - 65] - 1
print(res)2. 能否转换
2.1 问题描述
给两个字符串S和T判断S能不能通过删除一些字母包括0个变成T。
2.2 问题示例
输入为Slongterm和Tlong输出为True。
2.3 问题提示
要求不能使用循环嵌套不能使用字符串相应的查找方法。只能使用基础语法自行设计算法实现。
时间复杂度要控制在 On本题和上题的是不相同的请注意审题。T是 S的一个子字符串。
2.4 编码实现
s longterm
t long
res False
j 0
for i in range(len(s)):if s[i] t[j]:j 1if j len(t)-1:res Truebreak
print(res)3. 抽搐词
3.1 问题描述
正常单词不会有连续2个以上相同的字母如果出现连续3个以上的字母那么这是一个抽搐词。给出该单词从左至右求出所有抽搐字母的起始点和结束点。
3.2 问题示例
输入strwhaaaaatttsup输出为[[26][79]]aaaa和ttt是抽搐字母
输入strwhooooisssbesssst输出为[[25][79][1215]]ooosssssss都是抽搐字母。
3.3 问题提示
在迭代字符串之前声明一个临时变量刚开始初始化为空字符串如 oldc用来保存当前迭代字符的前一个字符。
3.4 编码实现
str whaaaaatttsup
oldc
res []
count 0
start 0
for i in range(len(str)):if str[i] oldc:count 1else:res.append([start, start count])count 0start ioldc str[i]
print(res)
for i in res:if i[len(i) - 1] - i[0] 2:print(i)二、Python 二班
1. 字符串写入的行数
1.1 问题描述
把字符串S中的字符从左到右写入行中每行最大宽度为100如果往后新写一个字符导致该行宽度超过100则写入下一行。 其中一个字符的宽度由一个给定数组widths决定widths[0]是字符a的宽度widths[1]是字符b的宽度…widths[25]是字符z的宽度。 把字符串S全部写完至少需要多少行最后一行用去的宽度是多少将结果作为整数列表返回。
1.2 问题示例
输入 widths[10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10] Sabcdefghijklmnopqrstuvwxyz
输出[360] 每个字符的宽度都是10为了把这26个字符都写进去需要两个整行和一个长度60的行。
1.3 问题提示
迭代字符串获取每一个字符的宽度。使用 ord(字符)-97可以获取字符在 widths 数组中的位置。 97是小字字母的ASCII编码。ord(‘字符’)可以获取到每一个字符的编码。
1.4 编码实现
widths [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10]
s abcdefghijklmnopqrstuvwxyz
# 记录最终的行数
line 0
# 宽度
width 0
# 迭代字符串
for w in s:# 查找字符的宽度width widths[ord(w) - 97]if width 100:line 1width 0
if width 0:line 1
print([line, width])2. 独特的莫尔斯码
2.1 问题描述
莫尔斯码定义了一种标准编码把每个字母映射到一系列点和短划线例如a-.-b--...c--.-.。给出26个字母的完整编码表格 [.--...-.-.-.....-.--........----.-.-..---.---.--.--.-.-....-..-...-.---..--.----..]。
给定一个单词列表单词中每个字母可以写成莫尔斯码。例如将cab写成-.-.-....-把cab的莫尔斯码串接起来即为一个词的转换。
返回所有单词中不同变换的数量。
2.2 问题示例
例如输入words[ginzengigmsg]输出2每一个单词的变换是
gin---...-.
“zen”-“–…-.”
gig---...--.
msg---...--.
也就是有两种不同的变换结果--...-.和--...--.。
2.3 问题提示
使用 ord()函数获取字母在数组中的位置再获取字母对应的编码。
2.4 编码实现
words [gin, zen, gig, msg]
# 莫尔斯码
mrsm [.-, -..., -.-., -.., ., ..-., --., ...., .., .---, -.-, .-.., --, -., ---, .--.,--.-, .-., ..., -, ..-, ...-, .--, -..-, -.--, --..]
res []
for w in words:ms for c in w:# 单词的莫尔斯码ms mrsm[ord(c) - 97]res.append(ms)
ma 0
dic {}
for r in res:# 统计莫尔斯吗的种类if r not in dic:dic[r] 1else:dic[r] 1
count len(dic.keys())
print(不同的变换:, count)3. 排序列表中最接近元素
3.1 问题描述
在一个排好序的数组A中找到i使得A[i]数组A中第i个数最接近目标数target输出i。
3.2 问题示例
输入[123]目标数target2输出1即A[1]与目标数最接近
输入[146]目标数target3输出1即A[1]与目标数最接近。
3.3 问题提示
可以认定为求最小值。最直接的方案是计算列表中每一个数字与目标数字的差然后再求最小值。
3.4 编码实现
方案一
num [1, 4, 6]
target3
res[]
for i in num:res.append(abs(target-i))
print(min(res))方案二
num[1,4,6]
target3
miabs(num[0]-target)
pos0
for i in range(1,len(num)):if abs(target-num[i])mi:miabs(target-num[i])posi
print(pos)三、Python 三班
1. 利用递归方法求阶乘之和
1.1 问题描述
计算 1!2!3!4!5!等于多少。
1.2 问题示例
本题要求先编写计算某一个数字阶乘的递归函数。
1.3 问题提示
要求使用递归方案可以认为 5!5X444X333X2!22X1!11。
1.4 编码实现
def get_jc(num):if num1:return 1return num*get_jc(num-1)s0
for i in range(1,6):sget_jc(i)print(s)2. 递归实现将所输入的5个字符以相反顺序打印出来
2.1 问题描述
程序运行时能接受用户输入5 个字符组成的字符串程序运行后以相反顺序输出字符串。
2.2 问题示例
如输入 abcde 输出 edcba。
2.3 问题提示
要求使用递归实现。
2.4 编码实现
def output(s, l):if l 0:returnprint(s[l - 1],end)output(s, l - 1)s input(Input a string:)
l len(s)
output(s, l)3. 使用递归求解列表的和
3.1. 问题描述
给一个列表如 a[ 012345698] 使用递归的方式求和。
3.2. 问题示例
如a[1,2,3]结果为6。
3.3 问题提示
要求使用递归实现。
3.4 编码实现
num [0, 1, 2,4,5]def get_sum(num):if len(num) 1:return num[0]return num[0] get_sum(num[1:])res get_sum(num)
print(res)