Given a string str
and a dictionary dict
, you need to find out which words in the dictionary are subsequences of the string and return those words.The order of the words returned should be the same as the order in the dictionary.
Example
Example 1:
Input:
str="bcogtadsjofisdhklasdj"
dict=["book","code","tag"]
Output:
["book"]
Explanation:Only book is a subsequence of str
Example 2:
Input: str="nmownhiterer" dict=["nowhere","monitor","moniter"] Output: ["nowhere","moniter"]
Solution 1:
public class Solution { /** * @param str: the string * @param dict: the dictionary * @return: return words which are subsequences of the string */ public List<String> findWords(String str, List<String> dict) { // Write your code here. List<String> res = new ArrayList<>(); for (String item: dict) { int sItem = 0; int sStart = 0; while (sItem < item.length() && sStart < str.length()) { if (item.charAt(sItem) == str.charAt(sStart)) { sItem += 1; } if (sItem == item.length()) { res.add(item); break; } sStart += 1; } } return res; } }