簡體   English   中英

如何打印字符串中的第一個重復出現的字符?

[英]How to print the first recurring character in a string?

我有一個學校作業,我必須創建一個程序來打印給定字符串中的第一個重復出現的字符。

例如,如果輸入是“hello”,那么它應該輸出為“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;
  }
 }
}

有人可以幫我解決這個問題嗎? 感謝您提供任何答案!

你只是打破了內循環,而不是外循環。 您可以將 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;
        }
    }
}

在此處獲取更多信息 - 如何打破 Java 中的嵌套循環?

希望這會有所幫助,但您應該嘗試自己完成學校作業。

我意識到您要求直接修復您當前的方法。 但是對於那些將來可能會閱讀這個問題的人來說,這里有一種使用正則表達式的非常時尚的方法:

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

l

演示

模式^.*?(.)\\1的基本思想是消耗字符串中最少數量的字符,直到我們遇到一個跟在同一個字符之后的單個字符。

這是另一個變體:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM