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 ...
随机推荐
- Android开发工程师文集-提示框,菜单,数据存储,组件篇
提示框,菜单,数据存储,组件篇 Toast Toast.makeText(context, text, 时间).show(); setDuration();//设置时间 setGravity();// ...
- 分布式任务调度系统xxl-job相关问题补充
搭建xxl-job时可能会遇到的问题 邮箱配置不起作用报异常 以163邮箱为例,接收邮件需要开启POP3/STMP服务 光开启服务还不够,需要添加授权码 授权码为手动输入,可以与登录密码不同,所以服务 ...
- python之使用PIL模块制作随机验证码
制作随机验证码,需要如下知识点: 1.随机验证码的制作(这里用的是random模块随机产生字符) 2.图片的制作 3.随机直线干扰项 4.其他随机干扰项 代码如下: from PIL import I ...
- JAVA代理分析
JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等.代理类与委托类 ...
- postgresql 表继承
可以按如下语句创建表 CREATE TABLE capitals ( name text, population real, altitude int, -- (in ft) state ) ); C ...
- 深入理解 Java 虚拟机
Java 代码编译和执行的整个过程 Java 代码编译是由 Java 源码编译器来完成,流程图如下所示: Java 字节码的执行是由 JVM 执行引擎来完成,流程图如下所示: Java 代码编译和执行 ...
- (转)Sphinx中文分词安装配置及API调用
这几天项目中需要重新做一个关于商品的全文搜索功能,于是想到了用Sphinx,因为需要中文分词,所以选择了Sphinx for chinese,当然你也可以选择coreseek,建议这两个中选择一个,暂 ...
- Xdebug在PHP中的安装配置
Xdebug在PHP中的安装配置涉及php.ini配置文件的修改. 1 首先需要下载Xdebug,根据安装的PHP版本,选择合适的Xdebug版本, 2 安装Xdebug将下载的php_xdebu ...
- JavaWeb学习 (四)————Http协议
一.什么是HTTP协议 HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的 ...
- #2 安装Python
上一篇文章主要记录 了Python简介,相信你已经爱上了小P,俗话说的好:公欲善其事,必先利其器,所以本文将带领你安装Python3! Windows平台 1.确认Windows位数: 鼠标右击此电脑 ...
