用Java设置的ASCII字符

时间:2014-01-21 00:37:08

标签: java algorithm ascii

问题在于破解代码访谈:实现一种算法来确定字符串是否具有所有唯一字符。这是解决方案:

public class ASCII {
public static boolean isUnique (String str) {
    boolean[] charSet = new boolean[256];
    for (int i = 0; i < str.length(); i++) {
        int val = str.charAt(i);
        if (charSet[val]) {
            return false;
        }
        charSet[val] = true;
    }
    return true;
}
public static void main(String[] args) {
    String[] words = {"abcde", "hello"};
    for (String word : words) {
        System.out.println(word + ":" + isUnique(word));
    }
}
}

我有一个非常基本的问题,为什么要创建长度为256的charSet?因为基于ASCII图表(http://www.techonthenet.com/ascii/chart.php),我认为我们只需要127个数字来表达所有字符。谢谢!

3 个答案:

答案 0 :(得分:4)

因为有扩展的ASCII

http://en.wikipedia.org/wiki/Extended_ASCII

128-255代码编码特定于文化的字符。

如果您想要考虑所有Unicode值,您应该这样做:

boolean[] charSet = new boolean[Character.MAX_VALUE + 1];

而不是你现在做的事情。

答案 1 :(得分:0)

此解决方案不正确。 Java String可以使用65536个字符。面试问题没有说明ASCII

答案 2 :(得分:0)

我也在研究这个问题并且有同样的问题。这是解决方案

    if (str.length() > 128) {
        return false;
    }

    boolean[] char_set = new boolean[128];
    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;
}