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

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

根據(jù)出現(xiàn)次數(shù)排列字符串的字符,如果元素不重復(fù),則保持插入順序

根據(jù)出現(xiàn)次數(shù)排列字符串的字符,如果元素不重復(fù),則保持插入順序

LEATH 2022-07-14 16:37:34
輸入你好世界輸出低頭我找到了一些計(jì)算出現(xiàn)次數(shù)的方法的答案,但這些方法弄亂了插入順序,為了得到上述輸出而需要維護(hù)。我正在尋找如何解決它的方法。我不擅長(zhǎng) Java 8 流和地圖!??!雖然會(huì)嘗試?yán)斫狻?
查看完整描述

2 回答

?
江戶川亂折騰

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

Map適合根據(jù)出現(xiàn)次數(shù)獲取字符的情況。Map只是將數(shù)據(jù)存儲(chǔ)在鍵值對(duì)中的結(jié)構(gòu)。有關(guān)詳細(xì)信息,請(qǐng)參見(jiàn)此處。


因此,要獲取字符及其在沒(méi)有 java8 的情況下出現(xiàn)的次數(shù),您可以這樣做:


public Map<Character, Long> countChar(String string) {


    Map<Character, Long> result = new LinkedHashMap<>();

    char[] chars = string.toCharArray();


    for (char c : chars) {

        if (result.get(c) != null) {

            result.put(c, result.get(c) + 1);

        } else {

            result.put(c, 1L);

        }

    }

    return result;

}

接下來(lái),您要按出現(xiàn)次數(shù)對(duì)值進(jìn)行排序。在這種情況下,您可以按值對(duì)結(jié)果映射進(jìn)行排序。請(qǐng)參閱Sort a Map<Key, Value> by values以找到您更熟悉的解決方案。要在沒(méi)有流的情況下執(zhí)行此操作,但使用 java8:


List<Map.Entry<Character, Long>> list = new ArrayList<>(result.entrySet());

list.sort(Map.Entry.comparingByValue(Comparator.reverseOrder()));

現(xiàn)在您可以像這樣打印每個(gè)字符:


StringBuilder output = new StringBuilder();


for (Map.Entry<Character, Long> entry : list) {

    output.append(entry.getKey());

}


System.out.println(output);



查看完整回答
反對(duì) 回復(fù) 2022-07-14
?
青春有我

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

一種可能的解決方案可能是以下方法:


private static String rearrange(String text) {

    return Arrays.stream(text.split("")) // create a stream with all letters

            .collect(Collectors.groupingBy(Function.identity(), Collectors.counting())) // create a map counting the occurrences of each letter

            .entrySet().stream() // create a stream of the map

            .sorted(Map.Entry.<String, Long>comparingByValue().reversed() // sort the letters by frequency, reversed for most frequent first

                    .thenComparingInt(e -> text.indexOf(e.getKey()))) // sort by position in original text if letter frequency is equal

            .map(Map.Entry::getKey) // map back to stream with all letters

            .collect(Collectors.joining()); // join all letters

}

它返回重新排列的字符串:


String text = "HelloWorld";

String rearranged = rearrange(text);

System.out.println(rearranged);

哪個(gè)打?。?/p>


loHeWrd


查看完整回答
反對(duì) 回復(fù) 2022-07-14
  • 2 回答
  • 0 關(guān)注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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