已经有一个包括了多行文本的字符串。请写一个函数,能够输出字符串中最长的行和最短的行。如果最长和最短的不止一行,请输出最长和最短的多行。请写出性能比较好的代码。
Fun(string lines){
1、拆分成多行;
2、循环为每行计算长度,记录最大和最小行的位置;
3、打印输出
}
int[] Fun1(int[] a, int b[]) { return a.Concat(b).OrderBy(x => x).ToArray(); } Tuple<string[], string[]> Fun2(string[] lines) { var query = lines.GroupBy(x => x.Length).OrderBy(x => x.Key); return new Tuple<string[], string[]>() { Item1 = query.First().ToArray(), //min Item2 = query.Last().ToArray() //max }; }
static void Main(string[] args) { string str = @"aaaa bbbbb cccccccccc dd dd eeee"; string[] s = str.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); Console.WriteLine("行数:" + s.Length); List<string> mins = new List<string>(); List<string> maxs = new List<string>() { "" }; for (int i = 0; i < s.Length; i++) { if (mins.Count == 0) { mins.Add(s[i]); } else if (s[i].Length < mins[0].Length) { mins.Clear(); mins.Add(s[i]); } else if (s[i].Length == mins[0].Length) { mins.Add(s[i]); } if (s[i].Length > maxs[0].Length) { maxs.Clear(); maxs.Add(s[i]); } else if (s[i].Length == maxs[0].Length) { maxs.Add(s[i]); } } Console.WriteLine("较小值:"); mins.ForEach(item => Console.WriteLine(item)); Console.WriteLine("较大值:"); maxs.ForEach(item => Console.WriteLine(item)); }