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

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

如何通過搜索給定字符并創(chuàng)建新的 ArrayList 來分解 ArrayList<String>?

如何通過搜索給定字符并創(chuàng)建新的 ArrayList 來分解 ArrayList<String>?

回首憶惘然 2023-10-19 21:52:07
我試圖通過在每個(gè)字符串中搜索給定字符來分解字符串ArrayList。根據(jù)字符的共同位置將列表分成新列表。如果數(shù)組是list1 = new String[] {"fish", "look", "flow", "fowl", "cool"}; 給定的字符是 'l' 那么我會(huì)得到 4 個(gè)新數(shù)組 no l "----"(fish), "l---"(look), "-l--"(flow), "-- -l"(雞,酷)。數(shù)組列表中將包含相應(yīng)的字符串。我得到的錯(cuò)誤是:java.lang.AssertionErrorArrayList<String> ret = f.familiesOf('l');        assertTrue(ret.contains("----"));    public Family_2(String[] w)    {        words = w;    }    /**     * Given a single character, return an ArrayList of     * all the word families. Each family should     * appear only once in the ArrayList and there should be none     * that aren't needed. The returned list can be in any order.     */    public ArrayList<String> familiesOf(char c)    {        String fam = "";        ArrayList<String> wordList = new ArrayList<String>();        ArrayList<String> wordList2 = new ArrayList<String>();        Collections.addAll(wordList, words);        String longestString = wordList.get(0);        // when I added the below code I stopped getting an out of bounds exception.        for (String element : wordList)        {            if (element.length() > longestString.length()) {                longestString = element;            }        }           // This is where I'm struggling with checking and separating the ArrayList.        for(int i = 0; i < words.length; i++)        {            if(words[i].indexOf(c) != c)            {                fam += '-';                 wordList2 = wordList;            }            else if(words[i].indexOf(c) == c)            {                fam += c;                wordList2 = wordList;            }        }        return wordList;    }這是劊子手游戲的前身。
查看完整描述

1 回答

?
呼喚遠(yuǎn)方

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

我認(rèn)為實(shí)現(xiàn)算法的關(guān)鍵是選擇正確的數(shù)據(jù)結(jié)構(gòu)。我認(rèn)為正確的數(shù)據(jù)結(jié)構(gòu)是Map。鍵Map將是Integer(因?yàn)殒I不能是原語,所以它不能是int),它將是字母的索引,值將是在該索引處具有相關(guān)字母的單詞列表。

這是我根據(jù)您詳細(xì)說明的規(guī)范和限制實(shí)現(xiàn)該算法的代碼。

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;


public class HangsMan {


? ? public static void main(String[] args) {

? ? ? ? String[] words = new String[]{"fish", "look", "flow", "fowl", "cool", "eel", "poll", "fill"};

? ? ? ? char letter = 'l';

? ? ? ? Map<Integer, List<String>> theMap = new HashMap<>();

? ? ? ? Integer key;

? ? ? ? List<String> value;

? ? ? ? for (String word : words) {

? ? ? ? ? ? int ndx = word.indexOf(letter);

? ? ? ? ? ? int last = word.lastIndexOf(letter);

? ? ? ? ? ? if (last == ndx + 1) {

? ? ? ? ? ? ? ? ndx += 1_000_000;

? ? ? ? ? ? }

? ? ? ? ? ? key = Integer.valueOf(ndx);

? ? ? ? ? ? if (theMap.containsKey(key)) {

? ? ? ? ? ? ? ? value = theMap.get(key);

? ? ? ? ? ? }

? ? ? ? ? ? else {

? ? ? ? ? ? ? ? value = new ArrayList<String>();

? ? ? ? ? ? ? ? theMap.put(key, value);

? ? ? ? ? ? }

? ? ? ? ? ? value.add(word);

? ? ? ? }

? ? ? ? theMap.forEach((k, v) -> System.out.println(v));

? ? }

}

請(qǐng)注意,雙字母單詞會(huì)在索引中添加 1_000_000(一百萬),以便將它們與單字母單詞分開。因此, “poll”一詞的索引將為 1,000,002,而“ cold”一詞的索引僅為 2。


你問我為什么要加一百萬?因?yàn)?,根?jù)維基百科,英語中最長(zhǎng)的單詞包含189,819 個(gè)字母。



查看完整回答
反對(duì) 回復(fù) 2023-10-19
  • 1 回答
  • 0 關(guān)注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報(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)