Java程序,用于在字符串中打印重复字符,而不会在输出中重复

时间:2014-07-03 12:40:13

标签: java

我是Java新手。今天我试图做一个Java程序来打印一个字符串中的重复字符,其中输出也不应该有重复。 例如,如果字符串输入为:“aabacdceefeg” 输出不应该有重复的字符 即输出应为:“ace”,不应该“aacee”

public class programclass { 
    private static Scanner s;
        public static void main(String [] args) {
            String n, a[];
            int i,j,l;
            System.out.println("Enter the string: ");
            s= new Scanner(System.in);
            n=s.nextLine();
            a=n.split("");
            l = a.length;
            for(i=0; i<l; i++){
                for(j=i+1; j<l; j++){
                    if(a[i].equals(a[j])) {
                        System.out.println(a[i]);
                    }
                }
            }
      }
}

请帮我解决这个问题。 提前谢谢。

3 个答案:

答案 0 :(得分:1)

这是一个解决方案,对字符串进行排序,然后使用正则表达式删除重复项:

String string = "aabacdceefeg";
char[] chars = string.toCharArray();
Arrays.sort(chars);     
String sorted = new String(chars);
String result = sorted.replaceAll("(.)\\1+", "$1");

答案 1 :(得分:0)

我认为这里更好的策略是将每个使用过的字符保存在一个集合中,然后检查字母是否在集合中。

public class programclass { 
private static Scanner s;
    public static void main(String [] args) {


        String n, a[];
        int i,j,k,l;
        Set<String> set = new HashSet<String>();
        System.out.println("Enter the string: ");
        s= new Scanner(System.in);
        n=s.nextLine();
        a=n.split("");
        l = a.length;
        for(i=0; i<l; i++){
            if(set.contains(a[i])){
                System.out.println(a[i]);
            }
            set.add(a[i]);
        }

} }

如果您只想重复打印一次字符,请添加另一组以跟踪已打印的字母。

答案 2 :(得分:0)

您可能希望使用Set来完成工作。 你走了:

import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Scanner;
import java.util.Set;

public class Sample {
    private static Scanner s;

    public static void main(String[] args) {
        String n, a[];
        int i, j, k, l;
        System.out.println("Enter the string: ");
        s = new Scanner(System.in);
        n = s.nextLine();
        a = n.split("");
        l = a.length;
        Set<String> noDupes = new LinkedHashSet<>();
        StringBuilder sb = new StringBuilder();
        for (i = 0; i < l; i++) {
            noDupes.add(a[i]);
        }
        for (Iterator<String> it = noDupes.iterator(); it.hasNext();) {
            String f = it.next();
            sb.append(f);
        }
        System.out.println(sb.toString());
    }
}