问题:确定一个字符串的所有字符(ascii)是否全都不相同,不相同返回false,相同返回ture.
思路:
采用空间换时间的算法,如果字符组过大,一一比较会特别耗时间。
1,定义一个boolean型的数组arry。长度128.因为ascii码只有这么多。
2,循环这个字符数组,先将第一个字符,存到arry中设置为true,
只要下次遇到相同的就会返回true.否则返回false.
源代码:
public class acciizifu {
public static void main(String[] args) {
//
String s="abcdefg";
System.out.println(hasSameLetter(s));
}
private static boolean hasSameLetter(String s){
boolean[] array=new boolean[128]; //默认false
//循环s中的每一个字符
for(int i=0;i<s.length();i++){
char ch=s.charAt(i);//返回指定索引处的 char 值
//System.out.println(ch+"\t");
if(array[ch]==true){
return true;
}else{
array[ch]=true;
}
}
//转成一个int
//根据int 找到array中对应的下标,判定它是否为false,如果是改为true 则为重复的,返回false
return false;
}
}