简单面试题的思层次思考:
原贴地址:
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]);