Which are in?

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();
            }
        }