判断字符串数组中是否所有字符只出现了一次
题目:给定一个字符类型数组chas,判断chas中是否所有的字符都只出现过一次
要求1: 时间复杂度为O(N)的算法
思路:使用哈希表,记录每个字符出现是否在哈希表里出现,如果没有出现,则添加; 若重复出现则返回False
def isUnique(L):if L == None or len(L) = 1:return Truedict_ = {}for item in L:if item in dict_:return Falseelse:dict_[item] = 1return True
要求2,空间复杂度为O(1)的算法
1、先将数组排序,再判断当前字符是否等于前一个字符即可
2、满足复杂度要求的算法只有非递归的堆排序
def HeapSort(L):if L == None or len(L) == 1:return for i in range(len(L)):heapInsert(L,i)size = len(L)-1swap(L,0,size)while size > 0:heapify(L,0,size)size -= 1swap(L,0,size)def heapify(L,index,size):left = 2 * index + 1while left < size:if left+1 < size and L[left+1] > L[left]:largest = left + 1else:largest = leftif L[largest] > L[index]:largest = largestelse:largest = indexif largest == index:breakswap(L,largest,index)index = largestleft = 2 * left +1def heapInsert(L,index):while L[index] > L[int((index-1)/2)]:swap(L,index,int((index-1)/2))index = int((index-1)/2)def swap(L,i,j):tmp = L[i]L[i] = L[j]L[j] = tmpdef isUnique2(chas):if chas == None or len(chas) == 1:return TrueHeapSort(chas)for i in range(1,len(chas)):if chas[i-1] == chas[i]:return Falsereturn True
若堆排序不是很了解,请参考我的另一篇文章:https://mp.csdn.net/postedit/94294293
判断字符串数组中是否所有字符只出现了一次相关推荐
- 判断字符串数组中的数字是否对称
分析以下需求,并用代码实现: (1)定义数字字符串数组{"010","3223","666","7890987",&qu ...
- C#判断字符串数组中是否有重复项
bool hasRepeat(string[] strs) {for (int i = 1; i < strs.Length; i++)for (int j = 0; j < i; j++ ...
- python使用正则表达式删除字符串中的其它字符只保留数字和字母
python使用正则表达式删除字符串中的其它字符只保留数字和字母 #python使用正则表达式删除字符串中的其它字符只保留数字和字母 # Python code to demonstrate # to ...
- java返回字符数组_JAVA语言实现随机返回字符串数组中的字符串
本文主要向大家介绍了JAVA语言实现随机返回字符串数组中的字符串,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. //随机返回字符串数组中的字符串 public static Stri ...
- LeetCode4_编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ““。(解决方案:横向扫描、 纵向扫描 、分治 二分查找 、秀儿操作之排序比较头尾)
题目 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow&q ...
- 20190501-编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串...
题目描述 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow ...
- 判断字符串不超过20个字符_如何阻止超过140个字符的推文(如果确实需要)
判断字符串不超过20个字符 After over a decade of staunchly restricting users to 140 characters in each message, ...
- 用js:字符串数组中每一项的长度。将字符串数组用 | 符号分割。有序数组插入排序插入数组。猴子选大王
1.字符串数组中每一项的长度 代码: <script> var arr = ['hello', 'world!', 'nice', 'to', 'meet', 'you'];var new ...
- 在有空字符串的有序字符串数组中查找(找给定字符串)
题目:在有空字符串的有序字符串数组中查找 有个排序后的字符串数组,其中散布一些空字符串,编写一个方法,找出给定字符串(肯定不是空字符串)的索引. package zifusearch;public c ...
最新文章
- 201671010423 词频统计软件项目报告
- 如何发布Android Library到maven私有仓库
- 终端执行php,PHP命令行执行PHP脚本的注意事项总结
- 程序员详解iOS的原生和第三方虚拟内存机制
- Jakarta EE工作组正式成立
- 访问母版页控件、属性、方法及母版页中调用内容页的方法
- document.write() 和writeln()方法注意事项
- 2017级C语言大作业 - 元气骑士
- 【最短路径问题笔记】Floyd算法求多源最短路径问题
- [转]利用处理程序错误攻击(下)
- Ubuntu16.04下完美切换Python版本
- PL/SQL批处理语句(BULK COLLECT子句和FORALL语句)
- c语言一行灯的熄灯问题,熄灯问题
- pubg服务器维护6.23,pubg维护6月23日 | 手游网游页游攻略大全
- Redhat认证体系
- GB28181协议视频流媒体平台中国标设备编号和通道国标编号标记唯一的摄像头|视频|镜头通道
- 【私藏好用】将bmap地图,Quik等五款软件打包送你端午节礼物
- 莫安迪2019平面设计作品展示
- php 图片木马检测
- 在go mod中使用k8s.io/code-generator生成代码