Python 基于python编写一些算法程序等
基于python编写一些算法程序等
by:授客 QQ:1033553122 QQ群:7156436
没特意去研究,只是这对群友在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])
Python 基于python编写一些算法程序等的更多相关文章
- Python 基于Python实现的ssh兼sftp客户端(上)
		基于Python实现的ssh兼sftp客户端 by:授客 QQ:1033553122 实现功能 实现ssh客户端兼ftp客户端:实现远程连接,执行linux命令,上传下载文件 测试环境 Win7 ... 
- Python 基于Python及zookeeper实现简单分布式任务调度系统设计思路及核心代码实现
		基于Python及zookeeper实现简单分布式任务调度系统设计思路及核心代码实现 by:授客 QQ:1033553122 测试环境 功能需求 实现思路 代码实践(关键技术点实现) 代码模块组织 ... 
- Python 基于python操纵zookeeper介绍
		基于python操纵zookeeper介绍 by:授客 QQ:1033553122 测试环境 Win7 64位 Python 3.3.4 kazoo-2.6.1-py2.py3-none-any.w ... 
- Python 基于Python结合pykafka实现kafka生产及消费速率&主题分区偏移实时监控
		基于Python结合pykafka实现kafka生产及消费速率&主题分区偏移实时监控 By: 授客 QQ:1033553122 1.测试环境 python 3.4 zookeeper- ... 
- Python 基于Python从mysql表读取千万数据实践
		基于Python 从mysql表读取千万数据实践 by:授客 QQ:1033553122 场景: 有以下两个表,两者都有一个表字段,名为waybill_no,我们需要从tl_waybill_b ... 
- Python 基于Python实现的ssh兼sftp客户端(下)
		基于Python实现的ssh兼sftp客户端 by:授客 QQ:1033553122 otherTools.py #!/usr/bin/env/ python # -*- coding:utf-8 ... 
- Python基于Python实现批量上传文件或目录到不同的Linux服务器
		基于Python实现批量上传文件或目录到不同的Linux服务器 by:授客 QQ:1033553122 实现功能 1 测试环境 1 使用方法 1 1. 编辑配置文件conf/rootpath_fo ... 
- Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理
		基于python+mysql浅谈redis缓存设计与数据库关联数据处理 by:授客 QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3 ... 
- Python 基于python操纵redis入门介绍
		基于python操纵redis入门介绍 by:授客 QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3.3.2 基于Python操作R ... 
随机推荐
- GMM基础
			一.单成分单变量高斯模型 二.单成分多变量高斯模型 若协方差矩阵为对角矩阵且对角线上值相等,两变量高斯分布的等值线为圆形. 若协方差矩阵为对角矩阵且对角线上值不等,两变量高斯分布的等值线为椭圆形, 长 ... 
- mac的safari浏览器调试ios手机网页
			iOS 6给Safari带来了远程的Web检查器工具. 一.参考链接 ios开发者文档 safari开发者工具 remote debugging safari 二.设置iphone 设置 -> ... 
- 【2019北京集训3】逻辑 树剖+2-sat
			题目大意:有一颗有$m$个叶子节点的二叉树. 对于叶子节点$i$,$x[i]=(a[i]\ xor\ V_{p[i]})or(b[i]\ xor\ V_{q[i]})$ 对于非叶子节点$i$,$x[i ... 
- HDU  4570---Multi-bit Trie(区间DP)
			题目链接 Problem Description IP lookup is one of the key functions of routers for packets forwarding and ... 
- 使用POI导出Excel文件
			创建表头信息 表头信息用于自动生成表头结构及排序 public class ExcelHeader implements Comparable<ExcelHeader>{ /** * ex ... 
- 课程四(Convolutional Neural Networks),第四 周(Special applications: Face recognition & Neural style transfer) —— 2.Programming assignments:Art generation with Neural Style Transfer
			Deep Learning & Art: Neural Style Transfer Welcome to the second assignment of this week. In thi ... 
- jQuery校验文件格式及大小
			一.html页面 <input type="file" name="file" id="uploadFileId" style=&qu ... 
- Nginx 的两种认证方式
			简介: 今天来研究一下 Nginx 的两种认证方式. 1.auth_basic 本机认证 2.ngx_http_auth_request_module 第三方认证 一.安装 Nginx shell & ... 
- vc++开发安装程序实例
			前言 市面上有很多安装程序制作软件:但是,要实现个性化安装程序,还是自己动手来写一个更为妥当.本文介绍基本的安装程序制作的步骤. 安装程序界面: 安装程序可以分为几个功能点:1 资源的嵌入.释放.2 ... 
- 杜绝假死,Tomcat容器做到自我保护,设置最大连接数(服务限流:tomcat请求数限制)
			为了确保服务不会被过多的http长连接压垮,我们需要对tomcat设定个最大连接数,超过这个连接数的请求会拒绝,让其负载到其它机器.达到保护自己的同时起到连接数负载均衡的作用. 一.解决方案:修改to ... 
 
			
		