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

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

在Java中使用數組計算字母頻率

在Java中使用數組計算字母頻率

梵蒂岡之花 2024-01-25 10:41:07
我有一項作業,通過迭代字符串中的字符來執行字母頻率分析。我不確定如何使用數組來存儲每個字母的頻率。該數組必須按字母順序排列,并且還存儲非字母字符(包括空格)不幸的是我必須使用一個數組來存儲頻率。在 Java 中完成此任務的最佳方法是什么?
查看完整描述

2 回答

?
溫溫醬

TA貢獻1752條經驗 獲得超4個贊

使用流的高效方法

Map<Character, Long> freq = Arrays.stream(arr).
                collect(Collectors.groupingBy(Character::charValue, Collectors.counting()));



查看完整回答
反對 回復 2024-01-25
?
桃花長相依

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

一種直接的方法是使用2個數組,一個用于存儲字符串中出現的字符,區分大小寫,另一個用于存儲其相應的頻率。


兩個數組都使用字符串長度的大小進行聲明,以下示例代碼展示了如何僅使用數組和簡單的邏輯來實現您想要的效果。


示例代碼


String str = "The array must be in alphabetical order and also store non-alphabetical characters (including spaces)";


char[] charArr = new char[str.length()];

int[] freqArr = new int[str.length()];

int idx = 0;

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

    char c = str.charAt(i);

    boolean isFound = false;

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

        if (freqArr[idx] == 0) {

            break;

        }

        if (c == charArr[idx]) {

            freqArr[idx]++;

            isFound = true;

            break;

        }

    }

    if (!isFound) {

        charArr[idx] = c;

        freqArr[idx]++;

    }

}


//Sort charArr and freqArr arrays

char tempChar;

int tempFreq;

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

    for (int j = i; j > 0; j--) {

        if (charArr[j] < charArr [j - 1]) {

            tempChar = charArr[j];

            charArr[j] = charArr[j - 1];

            charArr[j - 1] = tempChar;


            tempFreq = freqArr[j];

            freqArr[j] = freqArr[j - 1];

            freqArr[j - 1] = tempFreq;

         }

    }

}

打印字母頻率


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

    if (freqArr[i] != 0) {

        System.out.printf("%s:%d", charArr[i], freqArr[i]);

        System.out.println();

    }

}

控制臺輸出


[:13],[(:1],[):1],[-:1],[T:1],[a:13],[b:3],[c:6],[d: 3],[e:8],...


查看完整回答
反對 回復 2024-01-25
  • 2 回答
  • 0 關注
  • 141 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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