Cracking the Coding Interview,4th ed,1.1

时间:2016-08-04 01:48:47

标签: java data-structures

我在Cracking the Coding Interview中遇到了以下问题,1.1:

实施算法以确定字符串是否具有所有唯一字符。如果您不能使用其他数据结构怎么办?

这是本书的解决方案:
enter image description here

这是我的解决方案:

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类型转换为整数?

谢谢!

1 个答案:

答案 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)”应该有用。