【问题标题】:How to delete duplicated characters in a string?如何删除字符串中的重复字符?
【发布时间】:2013-10-06 03:48:17
【问题描述】:

好的,我是 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……我很迷茫。

【问题讨论】:

  • 输出不应该是“可爱的ga”吗?
  • 研究使用LinkedHashMap。通过字符串的一次传递将字符映射到它们的计数。然后遍历映射的条目并将频率为 1 的字符附加到某个缓冲区(即StringBuilder)。最后,打印结果。

标签: java if-statement merge switch-statement


【解决方案1】:

您需要为您的问题建立逻辑。首先打破问题陈述并开始寻找解决方案。来看看步骤吧,

  1. 从字符串中读取每个字符。
  2. 将其添加到集合中,但在添加之前,只需检查它是否存在。
  3. 如果存在,请将其删除并继续读取字符。
  4. 读完字符后,只需使用 System.out.println 将集合的内容打印到控制台即可。

我会推荐你​​参考像“像程序员一样思考”这样的书。这将帮助您开始构建逻辑。

【讨论】:

  • 能否请您选择合适的帖子并将其标记为答案。
【解决方案2】:

【讨论】:

    【解决方案3】:

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

        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);
    

    此代码循环遍历第一个单词的所有字符并检查第二个字符串是否包含该字符(无论大小写的任何形式)。如果不包含,则将其添加到输出字符串并在最后打印。

    希望这对你有用。

    【讨论】:

    • 谢谢。当我看到你的结果时,我正在修复程序。我的 if 语句有问题。这样就完成了程序。非常棒。
    【解决方案4】:

    仅用 1 行代码如何?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-07
      • 1970-01-01
      • 2013-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-30
      • 1970-01-01
      相关资源
      最近更新 更多