任何人都可以建议我如何在java中删除字符串中的重复字符,而不使用字符串函数。
据我所知,我们将给定的字符串转换为字符数组,然后我们可以使用TreeSet删除重复项。但ToCharArray又是一个字符串函数。
答案 0 :(得分:1)
您可以创建一个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
答案 1 :(得分:1)
所有其他答案都是通过使用其他类(如StringBuilder或Scanner)绕过String方法的使用。但是,它们仍然使用String方法,尽管是间接的,因为这些其他类本身使用String方法。我的解决方案有点顽皮"和jdk特定的,但至少它根本不使用任何String方法:
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);
...然后完全在阵列上进行处理。
请参阅,没有使用String方法! ; - )
答案 2 :(得分:0)
charAt和length来自Interface CharSequence
所以请使用StringBuilder并使用它们的方法实现。
StringBuilder sb = new StringBuilder("My My My");
并使用
sb.length()
与
结合使用sb.chartAt(index);
你可以迭代你的stringbuilder识别重复项,并使用
删除它们sb.deleteCharAt(index_of_char_to_delete);
答案 3 :(得分:0)
这个怎么样?
String str = "eyyigwdqweqe";
StringBuilder builder = new StringBuilder(str);
HashSet<String> mySet = new HashSet<String>();
for(int i = 0; i<builder.length();i++)
mySet.add(builder.charAt(i)+"");
System.out.println(mySet);
答案 4 :(得分:0)
public class RemoveDuplicates {
public static void main(String[] args) {
String input = new String("Geeksforgeeks");
String output = new String();
boolean isPresent;
if (input.length()==0){
System.out.println("Input String Empty. Program Terminated");
}
else {
//read each character of input string
for (int i = 0; i < input.length(); i++) {
isPresent=false;
//read through entire output string
for (int j = 0; j < output.length(); j++) {
//check if character exists in output string then set flag
if (Character.toLowerCase(input.charAt(i)) == Character.toLowerCase(output.charAt(j))) {
isPresent = true;
break;
}
}//for
//if flag is false means character is not dduplicated then add to output string
if (!isPresent) {
output += input.charAt(i);
}//if
}//end of input string loop
System.out.println("Original input : "+input);
System.out.println("Final output : "+output);
}
}//main
}//class