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

by:授客 QQ1033553122 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编写一些算法程序等的更多相关文章

  1. Python 基于Python实现的ssh兼sftp客户端(上)

    基于Python实现的ssh兼sftp客户端   by:授客 QQ:1033553122 实现功能 实现ssh客户端兼ftp客户端:实现远程连接,执行linux命令,上传下载文件 测试环境 Win7 ...

  2. Python 基于Python及zookeeper实现简单分布式任务调度系统设计思路及核心代码实现

    基于Python及zookeeper实现简单分布式任务调度系统设计思路及核心代码实现   by:授客 QQ:1033553122 测试环境 功能需求 实现思路 代码实践(关键技术点实现) 代码模块组织 ...

  3. Python 基于python操纵zookeeper介绍

    基于python操纵zookeeper介绍 by:授客  QQ:1033553122 测试环境 Win7 64位 Python 3.3.4 kazoo-2.6.1-py2.py3-none-any.w ...

  4. Python 基于Python结合pykafka实现kafka生产及消费速率&主题分区偏移实时监控

    基于Python结合pykafka实现kafka生产及消费速率&主题分区偏移实时监控   By: 授客 QQ:1033553122   1.测试环境 python 3.4 zookeeper- ...

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

    基于Python 从mysql表读取千万数据实践   by:授客 QQ:1033553122 场景:   有以下两个表,两者都有一个表字段,名为waybill_no,我们需要从tl_waybill_b ...

  6. Python 基于Python实现的ssh兼sftp客户端(下)

    基于Python实现的ssh兼sftp客户端   by:授客 QQ:1033553122 otherTools.py #!/usr/bin/env/ python # -*- coding:utf-8 ...

  7. Python基于Python实现批量上传文件或目录到不同的Linux服务器

    基于Python实现批量上传文件或目录到不同的Linux服务器   by:授客 QQ:1033553122 实现功能 1 测试环境 1 使用方法 1 1. 编辑配置文件conf/rootpath_fo ...

  8. Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理

    基于python+mysql浅谈redis缓存设计与数据库关联数据处理 by:授客  QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3 ...

  9. Python 基于python操纵redis入门介绍

    基于python操纵redis入门介绍 by:授客  QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3.3.2 基于Python操作R ...

随机推荐

  1. java中的io系统详解

    相关读书笔记.心得文章列表 Java 流在处理上分为字符流和字节流.字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符.字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字 ...

  2. centos7.2 安装 mysql5.7

    一.MySQL 5.7 主要特性: 原生支持 Systemd 更好的性能:对于多核 CPU.固态硬盘.锁有着更好的优化更好的 InnoDB 存储引擎 更为健壮的复制功能:复制带来了数据完全不丢失的方案 ...

  3. mysql之数据分区

    一:概述  通过把表分成多几区间,每个区间存储符合特定表达式的数据(即在我们创建分区表时指定每个分区存储的条件例如:PARTITION p0 VALUES LESS THAN (100) 即p0区间存 ...

  4. vue.js多页面开发环境搭建

    利用 vue-cli 搭建的项目大都是单页面应用项目,对于简单的项目,单页面就能满足要求.但对于有多个子项目的应用,如果创建多个单页面,显示有点重复,特别是 node_modules 会有多份相同的. ...

  5. DataFrame基本操作

    这些操作在网上都可以百度得到,为了便于记忆自己再根据理解总结在一起.---------励志做一个优雅的网上搬运工 1.建立dataframe (1)Dict to Dataframe df = pd. ...

  6. java中的字符、字符串及数字之间的转换(转)

    一.string 和int之间的转换 1.string转换成int  :Integer.valueOf("12") 2.int转换成string : String.valueOf( ...

  7. (转)Python中操作mysql的pymysql模块详解

    原文:https://www.cnblogs.com/wt11/p/6141225.html https://shockerli.net/post/python3-pymysql/----Python ...

  8. MongoDB的aggregate聚合

    聚合框架中常用的几个操作: $project:修改输入文档的结构.可以用来重命名.增加或删除域,也可以用于创建计算结果以及嵌套文档.(显示的列,相当遇sql 的) $match:用于过滤数据,只输出符 ...

  9. js常用面试题整理

    1.array操作关键字: pop() 删除最后一个:push最后添加一个或者多个:reverse颠倒数组:shift删除第一个元素:unshift首部添加元素:concat衔接两个数组:join把数 ...

  10. CMMI三个过程域的流程及达到特定目标、共性目标的要求(RD需求管理过程,PI产品集成过程,TS技术解决方案)

    RD需求管理过程 通过面谈的方式获取相关干系人关于产品生命周期各阶段的需求.期望,限制条件,接口 将相关干系人的需求.期望,限制条件,接口转化成用户需求说明书 依据客户需求,确定产品或产品组件需求,形 ...