笔试算法题及解答(Python)
1、给定任意一个正整数,求比这个数大且最小的“不重复数”,“不重复数”的含义是相邻两位不相同,例如1101是重复数,而1201是不重复数
# coding:utf-8
'''
Created on 2015年8月11日
Q1: 给定任意一个正整数,求比这个数大且最小的“不重复数”,“不重复数”的含义是相邻两位不相同,例如1101是重复数,而1201是不重复数
@author: Hongzm
''' def judgeRepetNum(numArr):
size = len(numArr)
for i in range(size-1):
if(numArr[i] == numArr[i+1]):
return True
return False if __name__ == '__main__':
num = 112340
while(num<9900000000):
numArr = list(str(num))
if not judgeRepetNum(numArr):
print num
break
else:
num += 1
2、长度为N(N很大)的字符串,求这个字符串里的最长回文子串
# coding:utf-8
'''
Created on 2015年8月11日
Q2: 长度为N(N很大)的字符串,求这个字符串里的最长回文子串
@author: Hongzm
'''
import re # manacher算法
def manacherStr(str):
# p记录每个节点回文子串半径
p = []
mx = 0
id = 0
size = len(str)
for i in range(1, size-1):
p[i] = min(p[2*id-i], mx -1) if mx>i else 1
while(str[i + p[i]] == str[i-p[i]]):
p[i]+=1
if(i + p[i]>mx):
mx = i + p[i]
id = i
print p def palindromeStr(words):
print "start"
maxLen = 0
index = 0
size = len(words)
for i in range(1, size-1):
print "i = ", i, words[i]
tempLen = 0
for j in range(1, min(i, size-i)):
print "j = ", j
if(words[i-j]==words[i+j]):
tempLen += 1
else:
break
print "tempLen = ", tempLen
if(tempLen > maxLen):
maxLen = tempLen
index = i
print "maxLen = ", maxLen
return words[index-maxLen:index+maxLen+1] if __name__ == '__main__':
str_origin = "fabbacddcabh"
str_ = "-" + "-".join(str_origin) + "-"
str_end = palindromeStr(str_)
print str_end.replace('-',"")
print re.sub("python", "word", "hello, python")
3、数轴上从左到右有n各点a[0], a[1], ……,a[n -1],给定一根长度为L的绳子,求绳子最多能覆盖其中的几个点
# coding:utf-8 '''
Created on 2015年8月11日
Q3、数轴上从左到右有n各点a[0], a[1], ……,a[n -1],给定一根长度为L的绳子,求绳子最多能覆盖其中的几个点
@author: Hongzm
''' theLen = 26
oriArr = [-20, -10, -5, 0 , 1, 6, 10, 18, 25]
lenArr = []
oriSize = len(oriArr)
for i in range(oriSize-1):
lenArr.append(oriArr[i+1] - oriArr[i])
# print lenArr maxNum = 0
index = 0
lenSize = len(lenArr)
for i in range(lenSize):
tempLen = 0
temp = 0
j= 0
while(tempLen <= theLen and j< lenSize-i):
temp +=1
tempLen += lenArr[i+j]
j +=1
if(temp > maxNum):
maxNum = temp
index = i print maxNum, index
print oriArr[index:index+maxNum]
笔试算法题及解答(Python)的更多相关文章
- 前端如何应对笔试算法题?(用node编程)
用nodeJs写算法题 咱们前端使用算法的地方不多,但是为了校招笔试,不得不针对算法题去练习呀! 好不容易下定决心 攻克算法题.发现js并不能像c语言一样自建输入输出流.只能回去学习c语言了吗?其实不 ...
- leetcode算法题121-123 --78 --python版本
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 实例输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作,不能 ...
- php笔试算法题:顺时针打印矩阵坐标-蛇形算法
这几天参加面试,本来笔试比较简单,但是在面试的时候,技术面试官说让我现场写一个算法,顺时针打印矩阵的坐标,如图所示 顺序为,0,1,2,3,4,9,14,19,24,23,22,21,20,15,10 ...
- 笔试算法题(58):二分查找树性能分析(Binary Search Tree Performance Analysis)
议题:二分查找树性能分析(Binary Search Tree Performance Analysis) 分析: 二叉搜索树(Binary Search Tree,BST)是一颗典型的二叉树,同时任 ...
- 笔试算法题(57):基于堆的优先级队列实现和性能分析(Priority Queue based on Heap)
议题:基于堆的优先级队列(最大堆实现) 分析: 堆有序(Heap-Ordered):每个节点的键值大于等于该节点的所有孩子节点中的键值(如果有的话),而堆数据结构的所有节点都按照完全有序二叉树 排.当 ...
- 笔试算法题(56):快速排序实现之非递归实现,最小k值选择(non-recursive version, Minimal Kth Selection of Quick Sort)
议题:快速排序实现之五(非递归实现,短序列优先处理,减少递归栈大小) 分析: 算法原理:此算法实现适用于系统栈空间不足够快速排序递归调用的需求,从而使用非递归实现快速排序算法:使用显示下推栈存储快速排 ...
- 笔试算法题(54):快速排序实现之单向扫描、双向扫描(single-direction scanning, bidirectional scanning of Quick Sort)
议题:快速排序实现之一(单向遍历) 分析: 算法原理:主要由两部分组成,一部分是递归部分QuickSort,它将调用partition进行划分,并取得划分元素P,然后分别对P之前的部分和P 之后的部分 ...
- 笔试算法题(53):四种基本排序方法的性能特征(Selection,Insertion,Bubble,Shell)
四种基本算法概述: 基本排序:选择,插入,冒泡,希尔.上述算法适用于小规模文件和特殊文件的排序,并不适合大规模随机排序的文件.前三种算法的执行时间与N2成正比,希尔算法的执行时间与N3/2(或更快)成 ...
- 笔试算法题(52):简介 - KMP算法(D.E. Knuth, J.H. Morris, V.R. Pratt Algorithm)
议题:KMP算法(D.E. Knuth, J.H. Morris, V.R. Pratt Algorithm) 分析: KMP算法用于在一个主串中找出特定的字符或者模式串.现在假设主串为长度n的数组T ...
随机推荐
- vsftpd配置详解
匿名用户权限控制: anonymous_enable=YES #是否启用匿名用户 no_anon_password=YES #匿名用户login时不询问口令 anon_upload_enable=(y ...
- BZOJ5415 [NOI2018] 归程
今天也要踏上归程了呢~(题外话 kruskal重构树!当时就听学长们说过是重构树辣所以做起来也很快233 就是我们按照a建最大生成树 这样话呢我们就可以通过生成树走到尽量多的点啦 然后呢就是从这个子树 ...
- sql中使一个字段升序,一个字段降序
ORDER BY _column1, _column2; /* _column1升序,_column2升序 */ ORDER BY _column1, _column2 DESC; /* _colum ...
- 使用burpsuite的几点经验
背景: 最近在做完一个系统的渗透测试,我同事在我昨晚渗透测试之后上去看了一下,发现了了一个我没有发现的漏洞. 请教了他之后,发现这个漏洞他是通过burp的scan发现的,只是对一个有参数的请求包sca ...
- boost exception
boost exception provides a new exception type, that lets you add data to an exception after it has b ...
- Linux 多个cpp文件的编译(Makefile)
打包so文件: CC = g++ CFLAGS=-Wall -O2 -fPIC TARGET = libbg.so SRCS := $(wildcard *.cpp) OBJS := $(patsub ...
- MYSQL索引优化之单表示例
1. 创建表 CREATE TABLE IF NOT EXISTS `article` ( `id` BIGINT(10) NOT NULL AUTO_INCREMENT, `author_id` I ...
- JavaScript中的编码解码
1.URI 统一资源标识符(URI)是一个用于标识某一互联网资源名称的字符串.,该种标识允许用户对任何(包括本地和互联网)的资源通过特定的协议进行交互操作.Web上可用的每种资源 -HTML文档.图像 ...
- 攻防世界 WEB篇
0x01 ics-06 查看源码发现:index.php 一开始直接用sqlmap跑了下没有发现注入,然后用brupsuite爆破参数 0x02 NewsCenter SQL注入中的POST注入,查阅 ...
- react教程 — redux
一.概念: http://caibaojian.com/react/redux-basic.html 或 https://www.cnblogs.com/maopixin ...