亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在字符串中找到四元組?

如何在字符串中找到四元組?

慕姐8265434 2022-11-30 16:43:47
我有這個測試挑戰,但我絕對是初學者,所以我堅持了下來,任何合適的解決方案將不勝感激!我們會說字符串中的“四元組”是連續出現四次的字符。打印給定字符串中四元組的數量。四胞胎可以重疊。提示:注意空格!輸入格式 帶有字符串的單行。輸出格式 數字。示例輸入 abcXXXXXabc示例輸出 2import java.util.*;public class Quadruples{    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        String s = sc.nextLine();        char [] c = s.toCharArray();        int j=0; int k=1; int m=j+2;        for(int i=0; i<c.length-1; i++){            if(c[j] != c[k]){                j++; k++;            }else{                for(int l=0; l<c.length-1; l++){                    if(c[j] == c[m]){                        m++;                    }else{                           continue;                    }                }            }        }    }}
查看完整描述

5 回答

?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

您可以使用帶有 String substring() 方法的 for 循環:


    Scanner input = new Scanner(System.in);

    String str = input.nextLine();

    int count = 0;


    for (int i = 0; i < str.length()-3; i++)

        if (str.substring(i, i+2).equals(str.substring(i+2, i+4))) count++;


    System.out.print(count);


查看完整回答
反對 回復 2022-11-30
?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

使用 for 循環的非常簡單的暴力破解方法:


    String input = "abcXXXXXabc";


    // Counter to store the number of quadruples found

    int quadrupleCounter = 0;


    // Loop over each character in the input string (skip the last 3 to prevent going out of bounds)

    for(int i = 0;i < input.length() - 3; i++) {

      // Get the current char in the string + the next 3

      char c1 = input.charAt(i);

      char c2 = input.charAt(i + 1);

      char c3 = input.charAt(i + 2);

      char c4 = input.charAt(i + 3);


      // Check if all 4 characters are equal

      if(c1 == c2 && c2 == c3 && c3 == c4) {

        quadrupleCounter++; // Increase the counter

      }

    }


    System.out.println(quadrupleCounter);


查看完整回答
反對 回復 2022-11-30
?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

或者使用正則表達式(只是為了好玩):


    Pattern pattern = Pattern.compile("(.)\\1{3}");

    int quadrupleCounter = 0;

    Matcher matcher = pattern.matcher(input);

    if (matcher.find()) {

        do {

            quadrupleCounter++

        } while (matcher.find(matcher.start()+1));

    }


查看完整回答
反對 回復 2022-11-30
?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

因此,如果我理解正確的話,“aaaabcccccc”意味著這個字符串中有 4 個四元組,例如,正如您所說的,它們可以重疊。所以這意味著 aaaa 是 1,前四個 cccc 是 2,然后從第二個 c 算起還有一個,所以是 3,然后從第三個 c 算起另一個是 4。如果是這樣,那么下面的代碼應該沒問題


因此,我們通過將字符串拆分為字符來創建一個 String 'stringArray'。然后我們使用第一個 for 循環(帶有 i)來遍歷所有字母,然后在該 for 循環中我們創建另一個 for 循環來檢查當前字母是否等于接下來的 3 個字母--->如果是這樣,然后我們增加 quadCount(我們找到了多少個四元組)。然后當 forloop 完成時,我們打印出 quadCount。


您會看到我們檢查 j=i+3 是否小于字符串數組的長度(在第二個 forloop 中),因為如果在我們檢查的字符之后直到 letterArray 的末尾沒有 3 個字符,那么肯定不會再有 3 個類似的。


如果注意空格意味著“cc cc”中沒有任何四元組,那么下面的代碼是正確的。如果這意味著您不應該考慮空格,并且“cc cc”有一個四元組,那么只需首先調用 String 上的 .trim() 方法,如下所示:String quad= "aaaabccc ccc".trim();-->this將從字符串中刪除(修剪)所有空格,然后代碼就可以了。


public static void main(String[] args) {

    String quad= "aaaabcccccc";

    int quadCount=0;

    String[] stringArray= quad.split("");


    for(int i=0; i<stringArray.length;i++){

        String current= stringArray[i];

        int j=i+3;

        if(j<stringArray.length){


            if(current.equals(stringArray[i+1]) && current.equals(stringArray[i+2]) && current.equals(stringArray[i+3]) ){

                quadCount++;

            }

        }


    }

        System.out.println("Quadcounter final is: "+quadCount);

    }


查看完整回答
反對 回復 2022-11-30
?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

未經測試,但我認為您可以從現在開始對其進行測試和更正。


public class CheckQuadruple {

    private Boolean checkQuadrupleInString(String str, int i) {

        if (i + 3 >= str.length())

            return false;

       if (str.charAt(i) != str.charAt(i + 1))

           return false;

       if (str.charAt(i + 1) != str.charAt(i + 2))

          return false;

        if (str.charAt(i + 2) != str.charAt(i + 3))

            return false;

        return true;

    }


    public int findQuadruple(String str) {

        int sum = 0;

        for (int i = 0; i < str.length(); i++) {

            if (checkQuadrupleInString(str, i))

                sum += 1;

        }

        return sum;

    }

}


查看完整回答
反對 回復 2022-11-30
  • 5 回答
  • 0 關注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號