• 去哪笔试两题


    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')
  • 相关阅读:
    ThinkPHP安全规范指引
    正则表达式:不能包含某些特殊字符串
    头晕是因为虚 ( ̄^ ̄゜)
    vs code中文扩展包
    table-cell width:1% 深入理解
    C#使用NPOI操作Excel
    C#利用LumenWorks.Framework.IO.Csv读取CSV文件
    发送邮件代码
    .net 集合详解
    EF Code First:数据更新最佳实践
  • 原文地址:https://www.cnblogs.com/fkissx/p/4390234.html
Copyright © 2020-2023  润新知