首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

C#算法标题

2014-01-06 
C#算法题目已有一个字符串,里面包括多行文本。请写一个函数,能够输出字符串中最长的一行 和最短的一行。如果

C#算法题目
已有一个字符串,里面包括多行文本。请写一个函数,能够输出字符串中最长的一行 和最短的一行。如果最长和最短的不止一行,请输出最长和最短的每一行。
求源码呀,我自己写不怎么全


List<string> xxx = "abc\r\nef\r\nb\r\nabc".Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).ToList();//后面那个参数是把空行过滤掉,如果不过滤就RemoveEmptyEntries改为None
int maxLen = xxx.Max(o => o.Length);
int minLen = xxx.Min(o => o.Length);
List<string> MaxRows = xxx.FindAll(o => o.Length == maxLen);
List<string> MinRows = xxx.FindAll(o => o.Length == minLen);

[解决办法]
string s = @"1
23
456
7890
aaaa";
string[] max = s.Split(new string[] { "\r\n "}, StringSplitOptions.None)
.GroupBy(x => x.Length).OrderBy(x => x.Key).Last().ToArray();
string[] min = s.Split(new string[] { "\r\n "}, StringSplitOptions.None)
.GroupBy(x => x.Length).OrderBy(x => x.Key).First().ToArray();
[解决办法]
 using (var fs = new FileStream(Server.MapPath("~/test.txt"), FileMode.Open))
        {
            using (var sr = new StreamReader(fs))
            {
                var array = sr.ReadToEnd()
                    .Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)
                    .OrderBy(t => t.Length);

                var min = array.First();
                var max = array.Last();

                Response.Write("max: " + max + " </br>");
                Response.Write("min: " + min + "</br>");

                sr.Close();
            }

            fs.Close();            
        }

热点排行