Python随笔37:Python基础编程练习题39~40

:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性。

Python基础练习题39:最长的升序子字符串

输入一个字符串,该字符串只含有26个小写字母,如s = 'azcbobobegghakl'。在字符串s中,有若干个按字母升序的子字符串,比如'az'、'bo'、'be'、'beggh'、'akl'等。

现要求写一个程序,输出字符串s中按字母升序的最长的子字符串。上面例子中,最长者'beggh'就是所求的。

若有多个相同长度的最长子字符串,取起始索引最靠前的那一个。比如,如果输入的字符串是s = 'abcbcd', 那么输出的子字符串就应该是'abc'。

输入样例:

azcbobobegghakl

输出样例:

按字母升序最长的子字符串是:beggh

输入样例:

abcdafgh

输出样例:

按字母升序最长的子字符串是:abcd

解答:本题比较有挑战性。
解题分两步走:

第一步,找出符合条件的符合条件的s的子字符串。

第二步,比较各符合条件的各个子字符串的长度,取其中最长者。

第一步是难点所在。而要确定子字符串,需要知道其起始索引index和结束索引,而关键在于如何确定结束索引index。我们可以设起始索引为i,然后加一个while循环,设定循环条件为s[i] <= s[i+1],即可达到目的。

需要注意的是,容易出现string index out of range这类错误,因此要对i的取值范围做一些限制。

s = input()
sub = ''
ans = ''
for i in range(len(s)):
    m = i  # 符合条件的s子字符串的起始索引。
    while i < len(s) - 1 and s[i] <= s[i+1]:
        i += 1
    n = i + 1  # 符合条件的s的子字符串的结束索引。         
    sub = s[m:n]  # 输出符合条件的s的子字符串。
    if len(ans) < len(sub):   # 比较各个符合条件的子字符串的长度,取起始索引最靠前的最长者。
        ans = sub # 把ans一直赋予最长的子字符串,随着循环遍历后它就是最长的子字符串。
print(f'按字母升序最长的子字符串是:{ans}')
Python基础练习题40:两个字符串合并去重输出

输入两个字符串,合并两个字符串,且对两个字符串的共有元素进行去重,生成一个新的字符串。然后再以列表的形式将新字符串内的元素排序之后再输出。

输入格式:

共两行,每一行为一个字符串。

输出格式:

共一行,为一个列表。

输入样例:

abbbccc
cdefff

输出样例:

['a', 'b', 'b', 'b', 'c', 'd', 'e', 'f', 'f', 'f']

解答:涉及到去重,多数时候可能会用到集合。又因为去重只是对两个字符串的共有元素而言,其余非共有元素依然可能需要重复,且要用到移除元素、排序和重新组合等操作,所以列表也是需要用到的。

a = list(input())
b = list(input())
S_a = set(a)
S_b = set(b)
S = S_a & S_b  # S为S_a和S_b的交集,S中的元素为列表a、b中的共有元素。

for i in S:
    while i in a:
        a.remove(i)  # 移除列表a中的所有a、b共有元素。
        
for i in S:
    while i in b:
        b.remove(i)  # 移除列表b中的所有a、b共有元素。

l = a + b + list(S)  #拼接列表a、b和a、b共有元素去重后组成的列表。
print(sorted(l))  # 最后排序输出。

Python基础练习题系列至此暂时告一段落。敬请关注新的内容。

Over.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 2,529评论 0 4
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,876评论 0 9
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,669评论 0 5
  • 四、集合框架 1:String类:字符串(重点) (1)多个字符组成的一个序列,叫字符串。生活中很多数据的描述都采...
    佘大将军阅读 848评论 0 2
  • 今天是6月30号,我在想这个问题,应该怎么去解决呢,这人工技能这些可都是人才。跟着他(她)们走个个都想帮我,内心确...
    小燕子_f869阅读 143评论 0 0

友情链接更多精彩内容