Q1.1
Implement an algorithm to determine if a string has all unique characters. What if you can not use additional data structures?
Sol.1 :
check every char of the string to every other char of the string for duplicate occurrences
Time complexity is O(n^2) , but no additional space is used
public class ccChap1_1 {
public static void main(String[] args) {
String str = "abcdefghijklmnopqrstttuvwxyz";
int count=0;
for (int i=0; i<str.length();i++){
for(int j=0;j<str.length();j++){
if(str.charAt(i)==str.charAt(j)&&i!=j){
count=1;
break;
}
}
}
if(count==0){
System.out.println("Unique");
}else if (count==1){
System.out.println("Not unique");
}
}
}
Sol.2
Assume char set is ASCII, if not ,just need to increase the size of char set
Initiate a boolean char set with default false value, so for each char of string, read char from string and set boolean value to true; if the char was read more than one time, function will return false to notice this string is not all unique characters.
public class ccChap1_1Sol {
public static void main(String[] args){
//boolean[] char_set = new boolean (256);
String a = "abcdefg#@$%^&&";
System.out.println(ccChap1_1Sol.isUniqueChars(a));
}
public static boolean isUniqueChars(String str){
boolean[] char_set = new boolean[256];
for(int i=0; i<str.length();i++){
int val = str.charAt(i);
if(char_set[val]) return false;
char_set[val] = true;
}
return true;
}
}
本文介绍两种检查字符串中是否所有字符都是唯一的方法:一种是通过双重循环进行比较的时间复杂度为O(n^2)的方法;另一种是利用ASCII字符集并创建一个布尔数组来标记已出现的字符,这种方法的空间复杂度为O(1),但需确保字符集大小固定。
593

被折叠的 条评论
为什么被折叠?



