【问题标题】:How to print the first recurring character in a string?如何打印字符串中的第一个重复字符?
【发布时间】:2019-02-19 04:25:20
【问题描述】:

我有一个学校作业,我必须创建一个程序来打印给定字符串中第一个重复出现的字符。

例如,如果输入是“helloo”,那么它应该输出为“l”。我编写了以下代码,但它同时打印了“l”和“o”。

String text = "helloo";
int length = text.length();
for (int i = 0; i <= length - 1; i++) {
 char curChar = text.charAt(i);
 for (int j = i + 1; j <= length - 1; j++) {
  if (curChar == text.charAt(j)) {
   System.out.println(curChar);
   break;
  }
 }
}

有人可以帮我解决这个问题吗?感谢您的任何回答!

【问题讨论】:

    标签: java string character


    【解决方案1】:

    你只是打破了内循环,而不是外循环。您可以将 break 与外部循环的标签一起使用。例如:

    String text = "helloo";
    int length = text.length();
    outerloop:
    for (int i = 0; i <= length - 1; i++) {
        char curChar = text.charAt(i);
        for (int j = i + 1; j <= length - 1; j++) {
            if (curChar == text.charAt(j)) {
                System.out.println(curChar);
                break outerloop;
            }
        }
    }
    

    在此处获取更多信息 - How to break out of nested loops in Java?

    希望这会有所帮助,但您应该尝试自己完成学校作业。

    【讨论】:

      【解决方案2】:

      我知道您要求直接解决您当前的方法。但对于那些将来可能会阅读此问题的人来说,这里有一种使用正则表达式的非常时尚的方法:

      String text = "helloo";
      String match = text.replaceAll("^.*?(.)\\1.*", "$1");
      System.out.println(match);
      
      l
      

      Demo

      ^.*?(.)\1 模式的基本思想是消耗字符串中最少个字符,直到我们碰到一个字符,然后是同一个字符。

      【讨论】:

        【解决方案3】:

        这是另一个变体:

         String text = "helloo";
            ArrayList<String> a = new ArrayList<String>(Arrays.asList(text.split(Pattern.quote(""))));
            for(int i = 0; i < a.size()-1;i++) {
                if(a.get(i).compareTo(a.get(i+1)) == 0) {
                    System.out.println(a.get(i));
                    break;
            }
        

        【讨论】:

          【解决方案4】:
                  class FirstRepeatingChar
                  {
                  public static void main(String args[])
                  {
          
                   String s="hello";
                    for(int i=0;i<s.length();i++)
                    {
                     for(int j=0;j<s.length();j++)
                      { 
                        if(s.charAt(i)==s.charAt(j))
                          { 
          System.out.println("  the First non repeating character is "  +s.charAt(i));
                           break;
                          }
                       }
                     }
                   }
                   }
          

          【讨论】:

            猜你喜欢
            • 2021-10-15
            • 1970-01-01
            • 2014-08-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-10-04
            • 2013-02-08
            • 2019-04-30
            相关资源
            最近更新 更多