去哪笔试两题
1,a是一個有序數組,但經過向右移動數位,現在預在a中查找元素key的位置,如不存在,返回0。例如a=[5,6.7.8,1,2,3,4].
實現:
1 #quna1 2 def findPos(a,key): 3 min=a[0]; 4 for i in range(len(a)): 5 if a[i]<min: 6 min=a[i]; 7 minpos=i; 8 print min,minpos#找到起點,由此將數組分為兩半 9 if key>a[minpos-1]: 10 return 0; 11 elif key>a[-1]: 12 return pos(a[0:minpos],key)+1; 13 else: 14 return pos(a[minpos:],key)+minpos; 15 def pos(que,key):#二分查找,復雜度為o(logn) 16 low=0;high=len(que)-1; 17 while(low<=high): 18 mid=(low+high)/2; 19 if que[mid]<key: 20 low=mid+1; 21 elif que[mid]>key: 22 high=mid-1; 23 else: 24 return mid; 25 return low; 26 27 a=[3,4,5,6,7,8,9,0,1,2,3] 28 print findPos(a,2)2,字符串解密。例如‘ab2e3d’輸出‘ababeeed’
實現:
1 # quna2 2 def decode(s): 3 rs='' 4 i=0;k=0;flag=0 5 while i<len(s): 6 if s[i].isdigit(): 7 d=i; 8 while s[d].isdigit():#探測后面數是多少 9 if d<len(s)-1:d+=1; 10 else:flag=1;break#如果超出s的長度標記flag 11 if flag:n=int(s[i:]);rs=rs+s[k:i]*n;break 12 else:n=int(s[i:d]);rs=rs+s[k:i]*n;i=d;k=d 13 14 else: 15 i+=1 16 else: 17 rs=rs+s[k:] 18 return rs 19 print decode('3abc13dd2ee')?
轉載于:https://www.cnblogs.com/fkissx/p/4390234.html
總結
- 上一篇: 瑞士冰川融化 惊现坠毁飞机残骸 遇难者5
- 下一篇: 史上最贵“垃圾袋”:巴黎世家12000元