判断字符串的字符是否只出现一次
来源:互联网 发布:网页数据分析 编辑:程序博客网 时间:2024/06/05 23:02
题目:来自脑客爱刷题
给定一个字符串str,判断字符串中是否所有字符都只出现过一次。
例如:
str: “abc”
返回true
str: “1231″
返回false
方法一:时间复杂度O(N)
bool IsUnique(string str){if(str.empty())return false;bool mark[256]={false};for(int i=0;i<str.size();i++){if(mark[str[i]])return false;mark[str[i]]=true;}return true;}
方法二:额外空间复杂度O(1),并有尽可能低的时间复杂度。本方法的时间复杂度是O(nlogn)。
//注意不能遗漏地址传递的 “&”,largest表示有效下标的最大值void HeadFixDown(string &str,int i,int largest){while(2*i+1<=largest){int child=2*i+1;if(2*i+2<=largest) child=str[2*i+2]>str[child]?2*i+2:child;if(str[i]<str[child]){swap(str[i],str[child]);/*char temp=str[i];str[i]=str[child];str[child]=temp;*/i=child;}elsebreak;}}bool IsUnique2(string &str){if(str.empty())return false;//生成堆int len=str.size();for(int i=str.size()/2-1;i>=0;i--){HeadFixDown(str,i,len-1);}cout<<str<<endl;//堆排序for(int i=len-1;i>=1;i--){swap(str[0],str[i]);HeadFixDown(str,0,i-1);//注意i-1}//判断有没有重复for(int i=1;i<len;i++){if(str[i]==str[i-1])return false;}return true;}
0 0
- 判断字符串的字符是否只出现一次
- 字符串问题---判断字符数组中是否所有的字符只出现了一次
- 判断字符数组中是否所有的字符都只出现过一次 Python 版
- 字符串之字符数组种是否所有的字符都只出现过一次
- 判断字符是否出现一次
- 字符串中第一次出现的只出现一次的字符
- 判断字符数组中是否所有的字符只出现了一次(左程云)非递归堆排序实现
- 查找字符串中只最早的出现一次的字符
- 找出字符串的第一个只出现一次的字符
- 只出现一次的字符
- 找出字符串中只出现一次的第一个字符
- 查找字符串中第一个只出现一次的字符
- 字符串查找:(第一次)&&(只出现一次的字符)
- 找出字符串中第一个只出现一次的字符
- 查找字符串中第一个只出现一次的字符
- 字符串中第一个只出现一次的字符
- 字符串中第一个只出现一次的字符
- 查找字符串中第一个只出现一次的字符
- Ubuntu linux下添加硬盘的方法
- Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用
- 【CSS】解决IE rgba不兼容问题
- Mysql 使用InnoDB引擎创建独立表空间分区
- NOSQL-CounchBase-添加JSON对象测试。
- 判断字符串的字符是否只出现一次
- IOS基础之设置APP的名字、设置图标、添加等待加载时的图片
- Android开发资源文件string.xml的一些特殊字符
- android studio 报错"Failed to find: com.android.support:appcompat-v7:10.+"
- android中的抽屉效果
- nginx websocket 参考
- 上传图片测试
- 在preferenceScreen中加入自己设计的layout布局
- JQuery 找不到动态生成的元素Id,并进行赋值的问题