您的位置:首页 > 其它

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]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: