如何删除字符串中的重复字符?

时间:2013-10-06 03:48:18

标签: java if-statement merge switch-statement

好吧,我是java世界的新手,我似乎无法正确使用这个程序。我想删除2个字符串中的重复字符并打印非重复字符。 例如:我输入“计算机程序”。输出应该是“可爱的”,因为这些是唯一没有重复的字符。

我直到这里:

public static void main(String[] args) {
    System.out.print("Input two words: "); 
    String str1 = Keyboard.readString();
    String words[] = str1.split(" "); 
    String str2 = words[0] + "  "; 
    String str3 = words[words.length - 1] ;
}

但我不知道如何输出字符。有人能帮助我吗? 我不知道是否应该使用if,switch,for,do或do-while ......我很困惑。

4 个答案:

答案 0 :(得分:0)

您需要的是为您的问题建立逻辑。首先打破问题陈述并开始寻找解决方案。在这里你可以采取步骤,

  1. 读取字符串中的每个字符。
  2. 将其添加到集合中,但在添加之前,只需检查它是否存在。
  3. 如果它存在,只需删除它并继续阅读characteer。
  4. 阅读完字符后,只需使用System.out.println将集合内容打印到控制台。
  5. 我会建议你推荐像“像程序员一样思考”这样的书。这将帮助您开始构建逻辑。

答案 1 :(得分:0)

只是提示:使用哈希映射(http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html)。

答案 2 :(得分:0)

在主程序的最后一行之后添加以下代码将解决您的问题。

    char[] strChars = str2.toCharArray();
    String newStr="";
    for (char c : strChars) {
        String charStr = ""+c;
        if(!str3.contains(charStr.toLowerCase()) && !str3.contains(charStr.toUpperCase())){
            newStr+=c;
        }
    }

    System.out.println(newStr);

此代码循环遍历第一个单词的所有字符,并检查第二个字符串是否包含该字符(在任何形式的情况下为Lower或Upper)。如果它不包含,则将其添加到输出字符串,最后打印它。

希望这适用于你的情况。

答案 3 :(得分:0)

如何在一行中完成它?

str = str.replaceAll("(.)(?=.*\\1)", "");