算法:确定一个字符串的所有字符是否全都不同。假使不允许使用额外的数据结构

 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 }

数据分析与算法

原文地址:https://www.cnblogs.com/jack4738/p/6959038.html