Python 基于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'

 

 

deffindstr(str_obj):

   str_list_final = []#存储找到的字符子串

 

  second=''

  temp_sub_str =''

 

  str_list =list(str_obj)#把字符串转为列表

  forindex,elementinenumerate(str_list[:]): #遍历查找连续的子串,包含只有一个字符的字符串

      first = second

       second = element

      iffirst ==  secondandfirst !='':#如果前一个字符串后一个字符不相等

          temp_sub_str = temp_sub_str + first#拼接字符成子串

 

          ifindex ==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)

         ifindex ==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)

  forsub_strinstr_list_final[:]:

       first = second

       second = sub_str

      iflen(first) <</span> len(second):

           max_lenth_str = second

           max_lenth_str_list=[]#前一个子串比后一个子串的长度短,把之前存储的全部清空,准备接收刚找到的最长子串

          max_lenth_str_list.append(max_lenth_str)

      eliflen(first) == len(second)andlen(first) !=0:#前一个子串和后一个子串相等

          max_lenth_str = second

           max_lenth_str_list.append(second) #保持之前存的不变,再拼接一个等长度的子串

      eliflen(first) >len(second): #前一个子串比后一个子串的长度长

          iflen(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__':
   fornuminrange(1,16):
       flag =1
       forfacinrange(2, num):
           ifnum % fac ==0:
               flag =0
               break
       ifflag ==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])

目录
相关文章
|
12天前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
115 26
|
20天前
|
机器学习/深度学习 编解码 算法
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
118 4
|
20天前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于A*算法的机器人路径规划研究(Python代码实现)
【机器人路径规划】基于A*算法的机器人路径规划研究(Python代码实现)
|
20天前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于深度优先搜索(Depth-First-Search,DFS)算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于深度优先搜索(Depth-First-Search,DFS)算法的机器人路径规划(Python代码实现)
|
11天前
|
设计模式 决策智能 Python
Python条件控制:让程序学会"思考"的魔法
本文深入浅出地讲解Python条件控制,从基础if语句到多分支、嵌套结构,再到简洁的三元表达式与Python 3.10新增的match-case模式匹配,结合电商折扣、会员等级、ATM系统等实战案例,全面掌握程序“智能决策”的核心逻辑。
172 0
|
20天前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
|
20天前
|
存储 算法 生物认证
基于Zhang-Suen算法的图像细化处理FPGA实现,包含testbench和matlab验证程序
本项目基于Zhang-Suen算法实现图像细化处理,支持FPGA与MATLAB双平台验证。通过对比,FPGA细化效果与MATLAB一致,可有效减少图像数据量,便于后续识别与矢量化处理。算法适用于字符识别、指纹识别等领域,配套完整仿真代码及操作说明。
|
20天前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于改进型A*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于改进型A*算法的机器人路径规划(Python代码实现)
|
12天前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
|
14天前
|
传感器 机器学习/深度学习 算法
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
101 1

热门文章

最新文章

推荐镜像

更多