哈希表中的最小字符串?

时间:2016-06-03 15:46:21

标签: java hashtable

这是我的代码。我无法弄清楚为什么它不起作用但是它失败了字符串GF和LH。

private int N;           // number of strings in the hash table
private int M;           // size of linear probing table
private String[] keys;   // the keys

// Returns the minimum string in the table
// Returns null if no such string exists
public String min() {
    // TODO
    String min = keys[0];
    for (int i=0;i<N;i++) {

        if (keys[i].compareTo(min) < 0) {
            min = keys[i];
        }
    }

    return min;
}

2 个答案:

答案 0 :(得分:0)

您可以尝试这样做:使用字符串长度

String arr[] = {"hei", "hvordan","as"};
String minni = Arrays.stream(arr).min((String a,String b)-> Integer.compare(a.length(),b.length())).get();

使用compareTo():

String arr[] = {"hei", "hvordan","as"};
String minni = Arrays.stream(arr).min(String::compareTo).get();

输出: 如

完整方法:

private int N;           // number of strings in the hash table
private int M;           // size of linear probing table
private String[] keys;   // the keys


// Returns the minimum string in the table
// Returns null if no such string exists
String arr[] = {"hei", "hvordan","as"};
public String min() {
    String min = Arrays.stream(arr).min(String::compareTo).get();

    return min;
}

答案 1 :(得分:0)

将for循环中的N更改为M. M是数组的实际大小,N是项目数。然后你必须考虑一个索引为null的情况,因为它是一个哈希表。祝你好运。