Given two arrays of strings a1 and a2 return a sorted array in lexicographical order and without duplicates of the strings of a1 which are substrings of strings of a2.
Example: a1 = ["arp", "live", "strong"]
a2 = ["lively", "alive", "harp", "sharp", "armstrong"]
returns ["arp", "live", "strong"]
a1 = ["tarp", "mice", "bull"]
a2 = ["lively", "alive", "harp", "sharp", "armstrong"]
returns []
Note: Arrays are written in "general" notation. See "Your Test Cases" for examples in your language.
using System; using System.Linq; using System.Collections.Generic; class WhichAreIn { public static string[] inArray(string[] array1, string[] array2) { // your code List<string> list = new List<string>(); foreach (string strItem1 in array1) { foreach (string strItem2 in array2) { if (strItem2.Contains(strItem1)) { if (list.Contains(strItem1) == false) { list.Add(strItem1); } } } } list = list.OrderBy(x => x).ToList() ; return list.ToArray(); } }
其他人的解法:
需要注意distinct的用法,以及any的用法
using System; using System.Linq; class WhichAreIn { public static string[] inArray(string[] array1, string[] array2) { return array1.Distinct() .Where(s1 => array2.Any(s2 => s2.Contains(s1))) .OrderBy(s => s) .ToArray(); } }