9.1数组与字符串(一)——确定一个字符串的所有字符是否完全不同
2015-07-30 16:56
295 查看
[align=left]功能:确定一个字符串的所有字符是否完全不同。[/align]
[align=left]三种方法:(默认为ASCII码)[/align]
[align=left]1、将字符串章的每一个字符与其余字符进行比较:时间复杂度高O(n*n)。[/align]
[align=left] //时间复杂度为O(n*n)[/align]
[align=left] publicstaticbooleanisDifferent(Stringstr){[/align]
[align=left] booleanflag=true;[/align]
[align=left] if(str!=null){[/align]
[align=left] for(inti=0;i<str.length()-1;i++){[/align]
[align=left] for(intj=i+1;j<str.length();j++){[/align]
[align=left] if(str.charAt(i)==str.charAt(j)){[/align]
[align=left] flag=false;[/align]
[align=left] break;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] returnflag;[/align]
[align=left] }[/align]
[align=left]2、索引值i对应的标记表示该字符串是否含有字母表低i个字符。若这个字符第二次出现,则立即返回false。(最优)[/align]
[align=left] /*索引值i对应的标记表示该字符串是否含有字母表低i个字符。[/align]
[align=left] 若这个字符第二次出现,则立即返回false。*/[/align]
[align=left] publicstaticbooleanisUniqueChar(Stringstr){[/align]
[align=left] if(str.length()>256)[/align]
[align=left] returnfalse;[/align]
[align=left] boolean[]char_set=newboolean[256];[/align]
[align=left] for(inti=0;i<str.length();i++){[/align]
[align=left] intval=str.charAt(i);[/align]
[align=left] if(char_set[val])[/align]
[align=left] returnfalse;[/align]
[align=left] char_set[val]=true;[/align]
[align=left] }[/align]
[align=left] returntrue;[/align]
[align=left] }[/align]
[align=left]3、先排序,然后比较相邻字符是否相同:排序算法占用空间较大。[/align]
[align=left] //先排序,然后比较相邻字符是否相同[/align]
[align=left] publicstaticbooleanisUniqueChar2(Stringstr){[/align]
[align=left] if(str.length()>256)[/align]
[align=left] returnfalse;[/align]
[align=left] char[]array=str.toCharArray();[/align]
[align=left] chartemp;[/align]
[align=left] //冒泡排序[/align]
[align=left] for(inti=0;i<str.length()-1;i++){[/align]
[align=left] for(intj=i+1;j<str.length();j++){[/align]
[align=left] if(array[i]>array[j]){[/align]
[align=left] temp=array[i];[/align]
[align=left] array[i]=array[j];[/align]
[align=left] array[j]=temp;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] //判断相邻字符是否相同[/align]
[align=left] for(inti=0;i<str.length()-1;i++){[/align]
[align=left] if(array[i]==array[i+1])[/align]
[align=left] returnfalse;[/align]
[align=left] }[/align]
[align=left] returntrue;[/align]
[align=left] } [/align]
[align=left]}[/align]
[align=left]三种方法:(默认为ASCII码)[/align]
[align=left]1、将字符串章的每一个字符与其余字符进行比较:时间复杂度高O(n*n)。[/align]
[align=left] //时间复杂度为O(n*n)[/align]
[align=left] publicstaticbooleanisDifferent(Stringstr){[/align]
[align=left] booleanflag=true;[/align]
[align=left] if(str!=null){[/align]
[align=left] for(inti=0;i<str.length()-1;i++){[/align]
[align=left] for(intj=i+1;j<str.length();j++){[/align]
[align=left] if(str.charAt(i)==str.charAt(j)){[/align]
[align=left] flag=false;[/align]
[align=left] break;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] returnflag;[/align]
[align=left] }[/align]
[align=left]2、索引值i对应的标记表示该字符串是否含有字母表低i个字符。若这个字符第二次出现,则立即返回false。(最优)[/align]
[align=left] /*索引值i对应的标记表示该字符串是否含有字母表低i个字符。[/align]
[align=left] 若这个字符第二次出现,则立即返回false。*/[/align]
[align=left] publicstaticbooleanisUniqueChar(Stringstr){[/align]
[align=left] if(str.length()>256)[/align]
[align=left] returnfalse;[/align]
[align=left] boolean[]char_set=newboolean[256];[/align]
[align=left] for(inti=0;i<str.length();i++){[/align]
[align=left] intval=str.charAt(i);[/align]
[align=left] if(char_set[val])[/align]
[align=left] returnfalse;[/align]
[align=left] char_set[val]=true;[/align]
[align=left] }[/align]
[align=left] returntrue;[/align]
[align=left] }[/align]
[align=left]3、先排序,然后比较相邻字符是否相同:排序算法占用空间较大。[/align]
[align=left] //先排序,然后比较相邻字符是否相同[/align]
[align=left] publicstaticbooleanisUniqueChar2(Stringstr){[/align]
[align=left] if(str.length()>256)[/align]
[align=left] returnfalse;[/align]
[align=left] char[]array=str.toCharArray();[/align]
[align=left] chartemp;[/align]
[align=left] //冒泡排序[/align]
[align=left] for(inti=0;i<str.length()-1;i++){[/align]
[align=left] for(intj=i+1;j<str.length();j++){[/align]
[align=left] if(array[i]>array[j]){[/align]
[align=left] temp=array[i];[/align]
[align=left] array[i]=array[j];[/align]
[align=left] array[j]=temp;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] //判断相邻字符是否相同[/align]
[align=left] for(inti=0;i<str.length()-1;i++){[/align]
[align=left] if(array[i]==array[i+1])[/align]
[align=left] returnfalse;[/align]
[align=left] }[/align]
[align=left] returntrue;[/align]
[align=left] } [/align]
[align=left]}[/align]
相关文章推荐
- [CortexM--CMSIS]详细的说明
- 毛玻璃效果shader
- leetCode 100.Same Tree (同树判断) 解题思路和方法
- Qt中QTreeWidget的使用
- Bootstrap_遮罩提示
- spring mvc 定时器
- ESLint
- spring中IOC是什么意思 个人觉得解释的非常有意思
- 正则表达式
- HDU 5319 Painter
- SpringMVC关于AOP拦截controller的注意事项
- spring中IOC是什么意思 个人觉得解释的非常有意思
- 44 - 判断扑克牌是否是顺子
- SAP价格 SAP系统价格 SAP ERP软件报价是多少?
- 学习笔记(八)对象的集合(三)
- [Android实例] Handler+ExecutorService(线程池)+MessageQueue模式+缓存模式
- hdu4597 (博弈dp)play game
- 基于sparksql调用shell脚本执行SQL
- 配置MySQL使用HugePages
- 设计模式C++实现(2)——策略模式