简单面试题的思层次思考:

原贴地址:

http://bbs.csdn.net/topics/390306242?page=1#post-393131256

内容简单回顾:

第一题:两个Int数组,都是从小到大的排列,需要合并成一个新的数组,也是从小到大排列,请写出性能比较好的代码。
Fun(int a[m],int b[n])
{
}

第二题:已经有一个包括了多行文本的字符串。请写一个函数,能够输出字符串中最长的行和最短的行。如果最长和最短的不止一行,请输出最长和最短的多行。请写出性能比较好的代码。
Fun(string lines){
1、拆分成多行;
2、循环为每行计算长度,记录最大和最小行的位置;
3、打印输出
}

其中,二楼的回复个人觉得最为闪耀(43楼的大神用的是汇编- -)

   C# code?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
    };
}

 

完全是用Lamda表达式,没有用到Linq

惊叹之余(本人以前从来没有用到过Lamda和Linq来进行排序和查询):

本人也查了一些相关的次数后,做出自己的总结:

1.string txt = "www.bj.com/p1a33c33d2f4g9h11m2/"; 匹配p1 c33 h11这类的内容

 Regex.Matches(txt, "[a-zA-Z][0-9]{1,}").OfType<Match>().Select(x => x.Value).ToList().ForEach(p => Console.WriteLine(p));

2."663,662,664" 执行后'662-663-664'

string.Join("-",list.OrderBy(x=>x).ToArray()); 

3.“Action=CX&AgentAccount=SH2009&Orderid=SH2009_05150001”得到一个Dictionary<strig,string>

Dictionary<string, string> dic = dicstr.Split('&').ToDictionary(x => x.Split('=')[0], p => p.Split('=')[1]);

 

 

posted @ 2012-12-27 00:40  爱吃猫的鱼  阅读(210)  评论(0编辑  收藏  举报