专栏首页授客的专栏Python 基于python编写一些算法程序等

Python 基于python编写一些算法程序等

没特意去研究,只是这对群友在QQ群里(7156436)提出的一些小程序实现、编程题,算法、问题等,本着学习的心态,根据自己的想法帮忙去编写实现而已。

题目1:在一串字符串中找出由连续相同字符组成的最长的子字符串,比如输入aabcd,输出aa,输入ab,输出ab,输入abbbbeee,输出bbb,eee,输入aabbbbee,输出bbb 代码实现如下:

 #!/usr/bin/env python
 # -*- coding:utf-8 -*-
 __author__ =  'shouke'
 def  findstr(str_obj):
   str_list_final = []  #  存储找到的字符“子串”
    second=''
    temp_sub_str =  ''
    str_list =  list(str_obj)  #  把字符串转为列表
    for  index,element  in  enumerate(str_list[:]):   #  遍历查找连续的子串,包含只有一个字符的字符串
    first = second
   second = element
    if  first ==  second  and  first !=  '':  #  如果前一个字符串后一个字符不相等
    temp_sub_str = temp_sub_str + first  #  拼接字符成“子串”
    if  index ==  len(str_list)-1:  #  当字符为最后一个字符时,需要再拼接一次,否则直接退出循环了
    temp_sub_str = temp_sub_str + second
   str_list_final.append(temp_sub_str)  #  存储最后一个连续的“子串”
    else:  #  如果前一个字符串后一个字符不相等
    temp_sub_str = temp_sub_str + first  #  依旧要把前一个字符拼接起来(因为它属于连续“子串”中的最后一个字符
    str_list_final.append(temp_sub_str)
    if  index ==  len(str_list)-1:
   str_list_final.append(second)
   temp_sub_str =  ''  #  置空,开始找下一个连续的“子串”
    second =  ''
    max_lenth_str =  ''  #  存储单个长度最大的字符子串
    max_lenth_str_list  = []  #  子串可能有多个,可能重复,用list存储,方便后续转为set,去重复
   #print(str_list_final)
    for  sub_str  in  str_list_final[:]:
   first = second
   second = sub_str
    if  len(first) <</span>  len(second):
   max_lenth_str = second
   max_lenth_str_list=[]  #  前一个子串比后一个子串的长度短,把之前存储的全部清空,准备接收刚找到的最长子串
    max_lenth_str_list.append(max_lenth_str)
    elif  len(first) ==   len(second)  and  len(first) !=  0:  #  前一个子串和后一个子串相等
    max_lenth_str = second
    max_lenth_str_list.append(second)   #保持之前存的不变,再拼接一个等长度的子串
    elif  len(first) >  len(second):   #前一个子串比后一个子串的长度长
    if  len(first) >  len(max_lenth_str):  #  需要判断前一个子串是否比上一次存储的最大子串的长度长
    max_lenth_str_list=[]  #  前一个比上次的长,清空之前拼接的
    max_lenth_str = first
   second = max_lenth_str
    print(set(max_lenth_str_list))  #  转set,去掉重复的
 if  __name__ ==  '__main__':
   findstr("a")
   findstr("abcdef")
   findstr("abcdeeeeffff")
   findstr("aabbcdddeeeffffs")
   findstr("a1abbcddddeeeffffs")
运行结果:

更高效的做法:

def look_substring_for_maxlength(string):
     temp_str = string[0]
     result_list = []
     for i in range(0, len(string)):
         if i
             temp_str = temp_str + string[i]
         else:
             temp_str = temp_str + string[i]
             if len(temp_str) > 1:
                 result_list.append(temp_str)
             temp_str = ''
 
     result_dic = {}
     for item in result_list:
         result_dic[item] = len(item)
 
     result_list = sorted(result_dic.items(), key=lambda item:item[1], reverse=True)
     return result_list[0][0]
 
 
 print(look_substring_for_maxlength('a1abbcddddeeeffffs'))
 

题目2:查找整数1到15内的素数 注:素数,只能被1和自己整除的整数 代码实现如下:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'shouke'

if __name__ == '__main__': for num in range(1, 16): flag = 1 for fac in range(2, num): if num % fac == 0: flag = 0 break if flag == 1: print('%d是质数' % num)

运行结果:
题目3:给定一个只包含正整数而且非空的数组,返回该数组中重复次数最多的前N个数字(返回结果按重复次数从多到少降序排列,N不存在取值非法的情况) 用最熟悉的语言或者伪代码实现该需求

代码1:

array = [2,4,2,4,4,5,5,5,5,6,2,6, 8, 8] array_set = set(array) # 转list为集合 result_dict = {} # 存储数组中对应数字及数字数现次数 for item in array_set: result_dict[str(item)] = array.count(item) result_list = sorted(result_dict.items(), key=lambda item:item[1], reverse=True) N = 3 # 前3个数 for i in range(0, N): print(result_list[i][0])

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python 基于Python从mysql表读取千万数据实践

    有以下两个表,两者都有一个表字段,名为waybill_no,我们需要从tl_waybill_bar_record表读取1000w条唯一的waybill_no,...

    授客
  • Java JVM监控工具JConsole简介

    -interval=n 将监视图的刷新间隔时间设置为n 秒(默认值为 4 秒)

    授客
  • Linux 学习笔记之超详细基础linux命令 Part 14

    ---------------------------------接Part 13------------------------------

    授客
  • c++中string的常用函数说明

    string可以说是是字符数组的升级版,使用更加啊方便,不容易出错。本文对string的常用函数进行简单介绍,做到会用即可。

    用户2038589
  • 【leetcode刷题】T90-转换成小写字母

    实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。

    木又AI帮
  • Python过滤不可见字符

        for i in range(0,32):         str = str.replace(chr(i),'')

    用户2398817
  • 简单聊聊字符串的翻转问题

    字符串的翻转在日常开发使用程度比较少,但是面试过程中却是常有的。最近看php 源码中strrev,因此写一篇文记录对字符串翻转问题的一些学习。

    写PHP的老王
  • python学习总结五(python序列

    成员关系符就是判断一个字符是否属于这个字符串,再就是这个字符串是否属于这个元组,或者列表。返回值也是布尔值(True,Flase)。

    用户2398817
  • 5.QT-QString类

    张诺谦
  • 二次元图片API平台PHP代码

    周俊辉

扫码关注云+社区

领取腾讯云代金券