1 package shuzhu; 2 3 import java.util.Scanner; 4 5 public class Test { 6 //第一种 7 public static boolean isUniqueChars(String str) { 8 if (str.length() > 128) { 9 return false; 10 } 11 int checker = 0; 12 for (int i = 0; i < str.length(); i++) { 13 int val = str.charAt(i) - 'a'; 14 if ((checker & (1 << val)) > 0) return false; 15 checker |= (1 << val); 16 } 17 return true; 18 } 19 //第二种 20 /*定义一个bool型大小为128的数组array,然后遍历输入的字符串,每遍历一个字符, 21 令int型变量val等于该字符的的ASCII码,如果这个字符之前都没有出现过, 22 那么令array[val]等于true,如果这个字符之前出现过了, 23 也就是array[val]已经等于true了,就返回false。 24 当字符串中所有字符都遍历结束后,如果没有返回false, 25 那么说明字符串中没有重复的字符,返回true*/ 26 public static boolean isUniqueChars2(String str) { 27 if (str.length() > 128) { 28 return false; 29 } 30 boolean[] char_set = new boolean[128]; 31 for (int i = 0; i < str.length(); i++) { 32 int val = str.charAt(i);//int型变量val等于该字符的的ASCII码 33 if (char_set[val]) return false; 34 char_set[val] = true; 35 } 36 return true; 37 } 38 39 public static void main(String[] args) { 40 System.out.println("请输入字符串:"); 41 Scanner s = new Scanner(System.in); 42 String i = s.next(); 43 String [] words = {i}; 44 for (String word : words) { 45 System.out.println(word + ": " + isUniqueChars(word) + " " + isUniqueChars2(word)); 46 } 47 } 48 49 50 }
数据分析与算法