有没有人可以建议我如何在java中删除字符串中的重复字符,也可以不使用字符串函数。
正如我所知,我们将一个给定的字符串转换为字符数组,然后我们可以使用TreeSet来删除重复项。但是ToCharArray仍然是一个字符串函数。
发布于 2015-10-23 17:35:06
您可以创建一个Scanner
来读取该字符串,就像您通过流读取它一样。
String input = "Hello World";
Scanner scanner = new Scanner(input);
scanner.useDelimiter("");
while(scanner.hasNext()) {
System.out.println(scanner.next());
}
收益率:
H
e
l
l
o
W
o
r
l
d
发布于 2015-10-23 20:56:40
所有其他答案都是通过使用其他类来绕过字符串方法的使用,例如StringBuilder或Scanner。但是,它们仍然在使用String方法,尽管是间接的,因为这些其他类本身也使用String方法。我的解决方案有点“淘气”,而且是特定于jdk的,但至少它根本不使用任何字符串方法:
String s = "hello";
Class<String> c = (Class<String>) Class.forName("java.lang.String");
Field f = c.getDeclaredField("value");
f.setAccessible(true);
char[] array = (char[]) f.get(s);
..。然后完全在数组上进行处理。
看,没有使用字符串方法!;-)
发布于 2015-10-23 18:43:51
charAt和长度来自接口CharSequence
因此,使用StringBuilder,并使用这些方法的it实现。
StringBuilder sb = new StringBuilder("My My My");
并使用
sb.length()
结合使用
sb.chartAt(index);
您可以遍历您的字符串构建器,识别重复项,然后使用
sb.deleteCharAt(index_of_char_to_delete);
https://stackoverflow.com/questions/33299111
复制相似问题