我在Cracking the Coding Interview中遇到了以下问题,1.1:
实施算法以确定字符串是否具有所有唯一字符。如果您不能使用其他数据结构怎么办?
这是我的解决方案:
public boolean allUnique(String input) {
HashSet<Character> set = new Hashset<Character>();
char c;
for (int i = 0; i < input.length(); i++) {
c = input.charAt(i);
if (set.contains(c)) return false;
set.add(c);
}
return true;
我的解决方案是否有效,效率如何?我还想知道是否有人可以解释ASCII及其与此问题的关系,因为在本书的解决方案中简要提到了它。这就是为什么我们能够将String中的每个char类型转换为整数?
谢谢!
答案 0 :(得分:1)
要说明如何不使用数组(如果这个数字真的很快,则不知道)你可以:
function boolean allUnique(String input){
for( int i=0; i<input.length(); i++ ){
if( input.indexOf(input.charAt(i),i) > -1 ){ return false; }
}
return true;
}
以上未经过测试,但应该有效。 “,i)”可能需要“,i + 1)”以使其超过当前角色。但我认为“,i)”应该有用。