从字符串中删除重复的字符

时间:2019-12-05 08:55:00

标签: java string duplicates

我要求

编写一个程序,该程序从字符串中删除重复的字母 **注意:大写和小写字母均视为重复字母。 我编写了代码,它适用于所有不带空格键的输入,当给定字符串带空格时,它将显示错误。 我只需要使用循环和数组,没有额外的函数或哈希, 这是我的代码,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;

2 个答案:

答案 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();