Java 从字符串中删除重复字符
我被要求编写一个程序,从字符串中删除重复的字母 **注:大写和小写字母视为重复字母。Java 从字符串中删除重复字符,java,string,duplicates,Java,String,Duplicates,我被要求编写一个程序,从字符串中删除重复的字母 **注:大写和小写字母视为重复字母。 我编写了代码,它适用于没有空格的所有输入,当字符串带有空格时,它会显示错误。 我只需要使用循环和数组,没有额外的函数或散列, 这是我的代码,几乎可以工作: 案例2: System.out.println(“给出字符串输入”); 字符串original=reader.next(); char[]charts=original.toCharArray(); int length=charts.length; 对于(
我编写了代码,它适用于没有空格的所有输入,当字符串带有空格时,它会显示错误。 我只需要使用循环和数组,没有额外的函数或散列, 这是我的代码,几乎可以工作:
案例2:
System.out.println(“给出字符串输入”);
字符串original=reader.next();
char[]charts=original.toCharArray();
int length=charts.length;
对于(int i=0;i我建议您使用Scanner的方法nextLine()
读取带空格的字符串,并使用您的算法进行处理
Scanner scanner = new Scanner(System.in);
String original = scanner.nextLine();
顺便说一下,如果您不能使用正则表达式,您可能需要使用基于计数排序的方法。创建一个大小等于最大字符大小的数组。当遇到字符值'X'
时,迭代字符串并增加索引X
的数组元素。将X
添加到您的字符数组中。当遇到数组时[十] >=1,不要将X添加到数组中。您的代码可以正常工作。只需在第三行使用此代码:
String original="";
original+=reader.nextLine();
您能否提供任何失败的特定输入?问题是您使用的是next()
,而不是只读取一个标记的nextLine()
。标记基本上是文本,只有一个空格,所以只有一个单词。要读取完整输入,请使用nextLine()
“当字符串带有空格时,它会显示错误。”-什么错误?if(charts[i]==charts[j]| | charts[i]+32==charts[j]| | | charts[i]-32==charts[j])
-这将把一些标点字符视为与一些小写字母“相同”。使用Character.toLowerCase(a)==Character.toLowerCase(b)| Character.toUpperCase(a)==Character.toUpperCase(b)
取而代之。您可以保存一行:String cleanString=new String(charts,0,length);
。他已经在上面明确声明reader为扫描仪。否则他无法接受输入。@AbdulAlimShakir我将Clearance的答案编辑为:static scanner reader=new scanner(System.in);我像你说的那样再次声明,代码成功了,谢谢我的朋友非常感谢@WardJub是的,我知道。我只是决定让其他读者明白:)希望能有所帮助