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)的更多相关文章

  1. 前端如何应对笔试算法题?(用node编程)

    用nodeJs写算法题 咱们前端使用算法的地方不多,但是为了校招笔试,不得不针对算法题去练习呀! 好不容易下定决心 攻克算法题.发现js并不能像c语言一样自建输入输出流.只能回去学习c语言了吗?其实不 ...

  2. leetcode算法题121-123 --78 --python版本

    给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 实例输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作,不能 ...

  3. php笔试算法题:顺时针打印矩阵坐标-蛇形算法

    这几天参加面试,本来笔试比较简单,但是在面试的时候,技术面试官说让我现场写一个算法,顺时针打印矩阵的坐标,如图所示 顺序为,0,1,2,3,4,9,14,19,24,23,22,21,20,15,10 ...

  4. 笔试算法题(58):二分查找树性能分析(Binary Search Tree Performance Analysis)

    议题:二分查找树性能分析(Binary Search Tree Performance Analysis) 分析: 二叉搜索树(Binary Search Tree,BST)是一颗典型的二叉树,同时任 ...

  5. 笔试算法题(57):基于堆的优先级队列实现和性能分析(Priority Queue based on Heap)

    议题:基于堆的优先级队列(最大堆实现) 分析: 堆有序(Heap-Ordered):每个节点的键值大于等于该节点的所有孩子节点中的键值(如果有的话),而堆数据结构的所有节点都按照完全有序二叉树 排.当 ...

  6. 笔试算法题(56):快速排序实现之非递归实现,最小k值选择(non-recursive version, Minimal Kth Selection of Quick Sort)

    议题:快速排序实现之五(非递归实现,短序列优先处理,减少递归栈大小) 分析: 算法原理:此算法实现适用于系统栈空间不足够快速排序递归调用的需求,从而使用非递归实现快速排序算法:使用显示下推栈存储快速排 ...

  7. 笔试算法题(54):快速排序实现之单向扫描、双向扫描(single-direction scanning, bidirectional scanning of Quick Sort)

    议题:快速排序实现之一(单向遍历) 分析: 算法原理:主要由两部分组成,一部分是递归部分QuickSort,它将调用partition进行划分,并取得划分元素P,然后分别对P之前的部分和P 之后的部分 ...

  8. 笔试算法题(53):四种基本排序方法的性能特征(Selection,Insertion,Bubble,Shell)

    四种基本算法概述: 基本排序:选择,插入,冒泡,希尔.上述算法适用于小规模文件和特殊文件的排序,并不适合大规模随机排序的文件.前三种算法的执行时间与N2成正比,希尔算法的执行时间与N3/2(或更快)成 ...

  9. 笔试算法题(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 ...

随机推荐

  1. 谈一谈测试驱动开发(TDD)的好处以及你的理解

    DD是指在编写真正的功能实现代码之前先写测试代码,然后根据需要重构实现代码.在JUnit的作者Kent Beck的大作<测试驱动开发:实战与模式解析>(Test-Driven Develo ...

  2. NIO摘录

    NIO,一种基于通道和缓冲区的I/O方式,可以使用native函数库直接分配堆外内存,然后通过一个存储在java 堆的DirectBteBuffer对象作为这块内存的引用进行操作,避免了再java堆和 ...

  3. pycharm 中切换terminal的盘符

    第一步,采用 cd .. 将当前路径设置为该盘符的根目录 第二步,采用 C: 将盘符设置为C盘然后使用 cd 命令将路径切换到指定位置

  4. Python格式输出汇总

    print ('%10s'%('test')) print ('{:<10}'.format('test'))#left-aligned print ('{:>10}'.format('t ...

  5. nyoj 83:迷宫寻宝(二)(计算几何)

    题目链接 枚举所有墙的2n个端点与宝物的位置作为一条线段(墙的端点必定与边界重合), 求出与之相交的最少线段数(判断线段相交时用跨立实验的方法),+1即为结果. #include<bits/st ...

  6. MongoDB笔记【1】——安装MongoDB

    SQL - 结构化查询语言 - 关系数据库全都同SQL来操作 1.安装MongoDB - 安装 - 配置环境变量 C:\Program Files\MongoDB\Server\3.2\bin - 在 ...

  7. php ucwords()函数 语法

    php ucwords()函数 语法 作用:把每个单词的首字符转换为大写 语法:ucwords(string) 参数: 参数 描述 string 必须,规定要转换的字符串 说明:把字符串中每个单词的首 ...

  8. 【BZOJ1396】识别子串(后缀自动机,线段树)

    题意: 一行,一个由小写字母组成的字符串S,长度不超过10^5 思路:论文题 设p为自动机上的合法结点,r为右端点,len=st[fa[p]]]+1 位置[r-st[p]+1,r-len+1]与r-i ...

  9. Radical and array

    Radical and array 时间限制: 1 Sec  内存限制: 128 MB提交: 46  解决: 27[提交][状态] 题目描述 Radical has an array , he wan ...

  10. window 任务管理器

    用的是win10 系统,一般window都差不多. 1.查看进程: 2.查看端口:性能 --> 打开资源资源监视器 --> 网络 --> 侦听端口 3.查看磁盘活动(查看文件被哪个进 ...