【算法-面试题】给定一个数组,数组里的每一个单元都是字符串,请判断如果数组中有重复的字符串返回False,否则返回True。

我的个人微信公众号:Microstrong

微信公众号ID:MicrostrongAI

微信公众号介绍:Microstrong(小强)同学主要研究机器学习、深度学习、计算机视觉、智能对话系统相关内容,分享在学习过程中的读书笔记!期待您的关注,欢迎一起学习交流进步!

知乎主页:https://www.zhihu.com/people/MicrostrongAI/activities

Github:https://github.com/Microstrong0305

个人博客:https://blog.csdn.net/program_developer

题目描述

给定一个数组,数组里的每一个单元都是字符串,请判断如果数组中有重复的字符串返回False,否则返回True。

 

解题思路

 (1)数组元素两两比较,时间复杂度O(n^{2})

    def is_duplicate_string(self, nums):
        if len(nums) <= 0:
            return True
        for i in range(len(nums)):
            for j in range(i + 1, len(nums)):
                if nums[i] == nums[j]:
                    return False

        return True

 

 (2)用空间复杂度换时间复杂度,时间复杂度O(n)

把数组里的字符串放到HashMap或者dic中,时间复杂度O(n)。

    def is_duplicate_string2(self, nums):
        if len(nums) <= 0:
            return True

        dic = {}
        for i in nums:
            if i in dic.keys():
                return False
            else:
                dic[i] = 1

        return True

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页