我开始阅读著名的“破解编程面试”书籍。
设计一个算法并编写代码,在不使用任何附加缓冲区的情况下删除字符串中的重复字符。注意:使用一两个额外变量是可以的,但不能使用数组的额外副本。
我在这里找到了一个类似的主题:Remove the duplicate characters in a string 作者给出的解决方案是:
这里的问题在于作者使用了一个数组作为此函数的参数。所以我的问题是:你如何使用字符串作为参数编写算法?因为我感觉在这里使用数组更容易,并且这样你可以“避开”练习中的困难(在我看来,我是一个新手Java开发者)。
你如何编写这样的算法?
设计一个算法并编写代码,在不使用任何附加缓冲区的情况下删除字符串中的重复字符。注意:使用一两个额外变量是可以的,但不能使用数组的额外副本。
我在这里找到了一个类似的主题:Remove the duplicate characters in a string 作者给出的解决方案是:
public static void removeDuplicates(char[] str) {
if (str == null) return;
int len = str.length;
if (len < 2) return;
int tail = 1;
for (int i = 1; i < len; ++i) {
int j;
for (j = 0; j < tail; ++j) {
if (str[i] == str[j]) break;
}
if (j == tail) {
str[tail] = str[i];
++tail;
}
}
str[tail] = 0;
}
这里的问题在于作者使用了一个数组作为此函数的参数。所以我的问题是:你如何使用字符串作为参数编写算法?因为我感觉在这里使用数组更容易,并且这样你可以“避开”练习中的困难(在我看来,我是一个新手Java开发者)。
你如何编写这样的算法?