我想了解我的程序的时间和空间复杂性

时间:2018-02-17 06:44:45

标签: python algorithm time-complexity computer-science anagram

import string
letters = string.ascii_lowercase
CHARACTER_HASH = dict(zip(letters, [0]*len(letters)))

def mapLettersToHash(text_a):
  for char in text_a:
    if char in CHARACTER_HASH.keys():
      CHARACTER_HASH[char]+=1

def computeCommonLetters(text_b):
  common_letters = 0    
  for char in text_b:
    if CHARACTER_HASH[char] > 0:
      common_letters+=1
  return common_letters

def computeUncommonLetters(text_a, text_b, common_letters):
  return len(text_a)+len(text_b)-(2*common_letters)

text_1 = "hello"
text_2 = "billion"

mapLettersToHash(text_1)
common = computeCommonLetters(text_2)
result = computeUncommonLetters(text_1, text_2, common)
print(result)    

问题:给出了两个大小为m和n的字符串,我们必须找到需要从字符串中删除多少个字符才能使它们成为彼此的字谜

我正在尝试计算程序的空间和时间复杂度。 根据我的推论:

  1. 创建字符哈希需要恒定的时间和空间

  2. 接下来,映射text_a的字符(如果大小为m)将花费O(m)时间

  3. 接下来,计算text_b中的常用字符(如果大小为n)将花费O(n)时间

  4. 计算不常见的字符是一项简单的算术运算,因此需要一段时间。

  5. 因此,我的最终节目将有:

    时间复杂度:O(m + n)

    空间复杂性:O(1){因为CHARACTER_HASH}

    如果我错过了什么,请告诉我?谢谢

0 个答案:

没有答案