第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在Java中使用數(shù)組計(jì)算字母頻率

在Java中使用數(shù)組計(jì)算字母頻率

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

2 回答

?
溫溫醬

TA貢獻(xiàn)1752條經(jīng)驗(yàn) 獲得超4個(gè)贊

使用流的高效方法

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



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

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊

一種直接的方法是使用2個(gè)數(shù)組,一個(gè)用于存儲(chǔ)字符串中出現(xiàn)的字符,區(qū)分大小寫,另一個(gè)用于存儲(chǔ)其相應(yīng)的頻率。


兩個(gè)數(shù)組都使用字符串長度的大小進(jìn)行聲明,以下示例代碼展示了如何僅使用數(shù)組和簡單的邏輯來實(shí)現(xiàn)您想要的效果。


示例代碼


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],...


查看完整回答
反對 回復(fù) 2024-01-25
  • 2 回答
  • 0 關(guān)注
  • 165 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號