林試圖找出最好的方式來匹配字符串連接的結果(被稱爲userInput),其中的字符串是從其他幾個串聯的結果字符串(數組列表或陣列中的例子我稱爲批准)匹配的字符串,其中字符串是從ArrayList中
ArrayList<String> approved = new ArrayList<>();
approved.add("abc");
approved.add("def");
approved.add("ghi");
approved.add("def jkl ggwp my life"); //repeated elements (abc,jkl)
approved.add("jkl");
approved.add("mno");
approved.add("pqr");
approved.add("stu vwx");
approved.add("yz");
我就用此ArrayList(上圖)解釋我difficulty.But的緣故,在現實世界中,我有一個
-fixed arraylist which wont have dynamic elements (the elements in the arraylist wont change)
-arraylist with more than 6000 elements
-elements in the arraylist contains multiple word e.g ("stu vwx")
-repeated elements but concatenated with another string in the arraylist
程序應返回true如果下面是userInput
userInput = "abc def";
userInput = "stu vwx yz"; //they can combine with another element as a whole
userInput = "ghi"; //it doesnt have to combine with another element
userInput = "vwx yz"; //they can split the arraylist elements with whitespace only and concatenate it with another element
然而,該方案應返回false如果下面是userInput
userInput = "yza"; //obviously it doesnt match anything
userInput = "ghi jk"; //doesnt match the concatenated string (ghi and jkl)
userInput = "pqr stu v"; //it can split the element with whitespace,but it has to take the whole word
userInput = "def abc"; //the order are important
林想拆分userInput得到第一個字和上一個字因爲順序是重要的。然後,使用包含找到它們在數組列表中的索引。
比方說
String userInput = "def ghi jkl mno";
//so,the firstWord and lastWord will be
firstWord = "def";
lastWord = "mno";
從這裏,。載有()將完成其工作,並返回其有串元素的多個指數firstWord和最後字(因爲firstWord在arraylist中發生多次),它將被配置爲返回另一個數組中可能的匹配。
firstWordPossibleIndex[] = {1,4};
lastWordPossibleIndex[] = {6};
由於訂單是很重要的,這裏的邏輯是,firstWordPossibleIndex應該包含比lastWordPossibleIndex較低的值,所以,如果有任何更大的價值,它可以被刪除,因爲提供的字符串會無效。
實現這個邏輯之後,它應該開始在這種情況下,從firstWordPossibleIndex下一個索引匹配的lastWordPossibleIndex
意義,它會檢查第二個字的userInput和嘗試匹配用的2和5索引的元素(因爲firstWordPossibleIndex是1和4)
它將檢查直到lastwordPossibleIndex,如果所有的單詞按照arraylist排序,它將返回true。
有了這個,我仍然遇到匹配字符串的地方,它將連接到另一個字符串的一部分。你有什麼想法解決這個問題嗎?
有沒有任何庫可以解決這個問題?