笔试算法题及解答(Python)
生活随笔
收集整理的這篇文章主要介紹了
笔试算法题及解答(Python)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、給定任意一個正整數,求比這個數大且最小的“不重復數”,“不重復數”的含義是相鄰兩位不相同,例如1101是重復數,而1201是不重復數
1 # coding:utf-8 2 ''' 3 Created on 2015年8月11日 4 Q1: 給定任意一個正整數,求比這個數大且最小的“不重復數”,“不重復數”的含義是相鄰兩位不相同,例如1101是重復數,而1201是不重復數 5 @author: Hongzm 6 ''' 7 8 def judgeRepetNum(numArr): 9 size = len(numArr) 10 for i in range(size-1): 11 if(numArr[i] == numArr[i+1]): 12 return True 13 return False 14 15 if __name__ == '__main__': 16 num = 112340 17 while(num<9900000000): 18 numArr = list(str(num)) 19 if not judgeRepetNum(numArr): 20 print num 21 break 22 else: 23 num += 12、長度為N(N很大)的字符串,求這個字符串里的最長回文子串
# coding:utf-8 ''' Created on 2015年8月11日 Q2: 長度為N(N很大)的字符串,求這個字符串里的最長回文子串 @author: Hongzm ''' import re# manacher算法 def manacherStr(str):# p記錄每個節點回文子串半徑p = []mx = 0id = 0 size = len(str)for i in range(1, size-1):p[i] = min(p[2*id-i], mx -1) if mx>i else 1while(str[i + p[i]] == str[i-p[i]]):p[i]+=1if(i + p[i]>mx):mx = i + p[i]id = iprint pdef palindromeStr(words):print "start"maxLen = 0index = 0size = len(words)for i in range(1, size-1):print "i = ", i, words[i]tempLen = 0for j in range(1, min(i, size-i)):print "j = ", jif(words[i-j]==words[i+j]):tempLen += 1else:breakprint "tempLen = ", tempLenif(tempLen > maxLen):maxLen = tempLenindex = iprint "maxLen = ", maxLenreturn 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 = 0temp = 0j= 0while(tempLen <= theLen and j< lenSize-i):temp +=1tempLen += lenArr[i+j]j +=1if(temp > maxNum):maxNum = tempindex = iprint maxNum, index print oriArr[index:index+maxNum]?
轉載于:https://www.cnblogs.com/Hughzm/p/9964847.html
總結
以上是生活随笔為你收集整理的笔试算法题及解答(Python)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中修改工作目录
- 下一篇: Android-----applicat