美文网首页
2018-08-22 华为笔试3-DNA最长重复序列

2018-08-22 华为笔试3-DNA最长重复序列

作者: 狗嗨旺 | 来源:发表于2018-08-22 21:14 被阅读0次
image.png
image.png
from collections import Counter

def slice_window(one_str,w=1):
  res_list=[]
  for i in range(0,len(one_str)-w+1):
    res_list.append((one_str[i:i+w],i))
  return res_list


def main_func(one_str):
  all_sub=[]
  for i in range(1,len(one_str)):
    newString = slice_window(one_str,i)
    for newSubString in newString:
        flag = True
        for subString in all_sub:
             if subString[0] == newSubString[0] and subString[1] + len(subString[0]) > newSubString[1]:
                 flag = False
        if flag == True:
            all_sub.append(newSubString)

  all_sub = [i[0] for i in all_sub]

  res_dict={}

  threshold=Counter(all_sub).most_common(1)[0][1]

  slice_w=Counter(all_sub).most_common(1)[0][0]

  for one in all_sub:

    if one in res_dict:

      res_dict[one]+=1

    else:

      res_dict[one]=1

  for key in list(res_dict):
       if res_dict[key] == 1:
           res_dict.pop(key)


  sorted_list=sorted(res_dict.items(), key=lambda e:(len(e[0]),e[1]),reverse=True)

  print(sorted_list[0][0]," ",len(sorted_list[0][0]))




if __name__ == '__main__':

  one_str='AGCTAGCT'

  two_str='abcabcabd'

  three_str='bbbbbbb'

  main_func(one_str)

  main_func(two_str)

  main_func(three_str)

借鉴了这位大兄弟的代码:http://www.erongda.com/dynamic.html?id=232 非常感谢。
一个半小时才做了一道题T_T

相关文章

  • 2018-08-22 华为笔试3-DNA最长重复序列

    借鉴了这位大兄弟的代码:http://www.erongda.com/dynamic.html?id=232 非...

  • 字符串

    1 最长无重复字符子串 2 最长上升子序列(动态规划) 3 最长公共子序列的长度(动态规划) 4 对于一个字符串,...

  • 最长回文子序列:腾讯笔试

    一个字符串的子串是字符串中连续的一个序列,而一个字符串的子序列是字符串中保持相对位置的字符序列,譬如,"adi"可...

  • 公共子序列问题

    最长公共子序列 最长上升子序列 最长公共上升子序列

  • 字符串的几个问题

    1.最长公共子序列2.最长公共子串3.最长回文串4.最长回文序列5.最长递增序列6.最长先增后减序列7.(最短)编...

  • 子序列问题

    最长公共子序列 最长上升/下降/不升/不降子序列

  • LintCode 最长上升子序列

    给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。 说明 最长上升子序列的定义: 最长上升子序列问...

  • LintCode 最长上升子序列

    题目 给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。 说明最长上升子序列的定义:最长上升子序列...

  • 华为认证培训是什么?

    华为认证是一个专业性很强的计算机认证体系,华为考试分为:笔试、机试、答辩;笔试又分为:规范笔试和技术笔试。答辩包括...

  • LintCode 最长上升子序列

    题目 给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。说明最长上升子序列的定义:最长上升子序列问...

网友评论

      本文标题:2018-08-22 华为笔试3-DNA最长重复序列

      本文链接:https://www.haomeiwen.com/subject/cqhuiftx.html