题解 | #查找兄弟单词#
查找兄弟单词
https://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68
using System; using System.Collections.Generic; using System.Linq; public class Program { public static void Main() { var input = Console.ReadLine().Split(" ").ToList(); var count = int.Parse(input[0]); var subList = new string[count]; input.CopyTo(1, subList, 0, count); var x = input[count + 1]; var k = int.Parse(input[count + 2]); var all = Arrange(x).Distinct().ToList(); all.Remove(x); var result = new List<string>(); foreach (var s in subList) { if (all.IndexOf(s) != -1) { result.Add(s); } } var ordered = result.OrderBy(r => r).ToList(); Console.WriteLine(result.Count); if (k < ordered.Count) { Console.WriteLine(ordered[k - 1]); } } public static IList<string> Arrange(string input) { var arrangedList = new List<string>(); for (var i = 0; i < input.Length; i++) { var t = input[i]; var j = input.Remove(i, 1); if (j.Length > 2) { foreach (var k in Arrange(j)) { arrangedList.Add(t + k); } } else if(j.Length == 2) { arrangedList.Add($"{t}{j[0]}{j[1]}"); arrangedList.Add($"{t}{j[1]}{j[0]}"); } else { arrangedList.Add($"{t}{j[0]}"); } } return arrangedList; } }