LeetCode:1408
標籤:String
難度:Easy
public class LeetCode1408 {
/*
* Easy
* 1408. String Matching in an Array
* Given an array of string words. Return all strings in words which is substring of another word in any order.
* String words[i] is substring of words[j], if can be obtained removing some characters to left and/or right side of words[j].
*
* Example 1:
* Input: words = ["mass","as","hero","superhero"]
* Output: ["as","hero"]
* Explanation: "as" is substring of "mass" and "hero" is substring of "superhero".
* ["hero","as"] is also a valid answer.
*
* Example 2:
* Input: words = ["leetcode","et","code"]
* Output: ["et","code"]
* Explanation: "et", "code" are substring of "leetcode".
*
* Example 3:
* Input: words = ["blue","green","bu"]
* Output: []
*
*/
public static void main(String[] args) {
String[] input = {"leetcode","et","code"};
List<String> resList = stringMatching(input);
resList.forEach(data -> System.out.println(data));
}
public static List<String> stringMatching(String[] words) {
Set<String> res = new HashSet<String>();
for(int i = 0 ; i < words.length ; i++) {
String word = words[i];
int endCount = 0;
while(endCount < words.length) {
if(i == endCount) {
endCount++;
continue;
}
if(word.contains(words[endCount])) {
res.add(words[endCount]);
}
endCount++;
}
}
return res.stream().collect(Collectors.toList());
}
}