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;
}
}