编写一个程序,该程序从字符串中删除重复的字母 **注意:大写和小写字母均视为重复字母。 我编写了代码,它适用于所有不带空格键的输入,当给定字符串带空格时,它将显示错误。 我只需要使用循环和数组,没有额外的函数或哈希, 这是我的代码,ALMOST可以工作:
case 2:
System.out.println("Give the string input");
String original=reader.next();
char[] charts=original.toCharArray();
int length=charts.length;
for (int i=0; i<length; i++){
for (int j=i+1; j<length; j++){
if(charts[i]==charts[j]||charts[i]+32==charts[j] ||charts[i]-32==charts[j]){
int temp=j; //duplicate element index
for (int k=temp; k<length-1; k++){ //delete shifting elements to left.
charts[k]=charts[k+1];
}//inner inner for
j--;
length--; // reduce char array length because we removed a character
}//if
}//inner for
}//for
String CleanString= new String(charts); //new string without repeated chars
CleanString=CleanString.substring(0,length); //set its length
System.out.println("New str = "+CleanString);
break;
答案 0 :(得分:3)
我建议您使用扫描仪的方法nextLine()
读取带空格的字符串,并使用算法对其进行处理
Scanner scanner = new Scanner(System.in);
String original = scanner.nextLine();
顺便说一句,如果您不能使用正则表达式,则可能要使用基于计数排序的方法。创建一个大小等于char的最大大小的数组。当遇到字符值X
时,遍历字符串并递增索引'X'
的数组元素。将X
添加到您的字符数组中。遇到array[X] >= 1
时,请勿将X添加到数组中。
答案 1 :(得分:0)
您的代码可以正常工作。只需在第三行使用此代码:
String original="";
original+=reader.nextLine();