微软中国经典算法题 求解(下周结帖)

happy664618843 2012-12-06 09:00:37
面试时碰到的算法题 如下:
1:有一个随机字符串"BPMQKLNHZCY..."给定一个从A到Z之间的任意随机字符
如"N", 然后对随机字符串进行排序 从A到Z,比"N"小的放在"N"的左边 比 "N"大的放在"N"的右边,要求在排序的过程中不改变字符的相对位置,如示例字符串的"H"和"C" 在"N"后,在排序换到"N"前面时,也应保持"C"在"H"后的相对位置。

2:字符串 "{[(10+3)*18-24/8]*(48+37)}/3", 实现一个算法,求字符串算式的结果

3:{"peolpe":[
{"firstName":"Brett","lastName":"Mclaughlin","email":"aaa"},
{"firstName":"Jhon","lastName":"Hunter","email":"bbb"},
{"firstName":"Jason","lastName":"Harold","email":"ccc"},


]}

请实现一个算法,将上述json格式的数据填充到下面指定类的实例中
Public Class People{
Public String FirstName;
Public String LastName;
Public String Email;
}
...全文
632 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
我是小李 2012-12-19
  • 打赏
  • 举报
回复
问题1就是快速排序的第一步。 问题2考查你堆栈和逆波兰式。 五楼已回答。 问题3 三楼已回答。 问题总结,基础但有道理。
jobying 2012-12-14
  • 打赏
  • 举报
回复
第一题:
            string str = "MNJDOIkjaldfDVIUAASKFDFDFsdfsdegfdfgh";

            StringBuilder sb1 = new StringBuilder();

            StringBuilder sb2 = new StringBuilder();

            foreach (char c in str)
            {
                if ((int)c < (int)'N')
                {
                    sb1.Append(c);
                }
                else
                {
                    sb2.Append(c);
                }
            }


            str = sb1.ToString() + 'N' + sb2.ToString();
nickppa 2012-12-12
  • 打赏
  • 举报
回复
第二题,我没用逆波兰表达式,只是面向对象了下,写得不好,还请见量 附件
happy664618843 2012-12-11
  • 打赏
  • 举报
回复
是的 还在长宁区 福泉路99号呢
johooLee 2012-12-11
  • 打赏
  • 举报
回复
引用 14 楼 happy664618843 的回复:
引用 10 楼 johooLee 的回复:引用 5 楼 caozhy 的回复:问题1就是快速排序的第一步。 问题2考查你堆栈和逆波兰式。 问题3不知道是让你自己实现算法还是用现成的,很尴尬的题目。 感觉不是微软的,像三流作坊的面试题,lz如实招来。 楼主不是说了是微软中国吗? 我怎么感觉你的每一句话中都带有蔑视别人的倾向?来,说说你在哪家公司,说出来吓吓……
嗯,是的。 对了,你也在上海吗?
游离失所 2012-12-10
  • 打赏
  • 举报
回复

public string test(string str_text, string str_index)
        {
            char[] arr = str_text.ToUpper().ToCharArray();
            
            int index = Convert.ToChar(str_index.ToUpper());

            var big = arr.Where(x => x > index).Concat(str_index.ToUpper()).Concat(arr.Where(y => y < index)).ToList();
            StringBuilder sb = new StringBuilder("");
            foreach (char temp in big)
            {
                sb.Append(temp.ToString());
            }
            return sb.ToString();

}
最近学习linq...这样写是不是优雅多了0 0
游离失所 2012-12-10
  • 打赏
  • 举报
回复

public string test(string str_text, string str_index)
        {
            char[] arr = str_text.ToUpper().ToCharArray();
            int index = Convert.ToChar(str_index.ToUpper());
            string max = "";
            string min = "";
            for (int i = 0; i < arr.Length; i++)
            {
                if (arr[i] > index)
                {
                    max += arr[i].ToString();
                }
                if (arr[i] < index)
                {
                    min += arr[i].ToString();
                }
            }
            return max + str_index.ToUpper() + min;
        }
第一题吧...这是我的实现...应该没问题吧0 0.. 第二题没听懂(基础比较差)... 第三题3楼已经给出答案了...正则匹配每一行...然后每行的对应的group[index/key].value封装成对象
happy664618843 2012-12-10
  • 打赏
  • 举报
回复
引用 10 楼 johooLee 的回复:
引用 5 楼 caozhy 的回复:问题1就是快速排序的第一步。 问题2考查你堆栈和逆波兰式。 问题3不知道是让你自己实现算法还是用现成的,很尴尬的题目。 感觉不是微软的,像三流作坊的面试题,lz如实招来。 楼主不是说了是微软中国吗? 我怎么感觉你的每一句话中都带有蔑视别人的倾向?来,说说你在哪家公司,说出来吓吓我!
呵呵 恩 上海这边不是有个Microsoft吗 是这边出的题 难道微软中国只有在北京 有?
johooLee 2012-12-10
  • 打赏
  • 举报
回复
引用 5 楼 caozhy 的回复:
问题1就是快速排序的第一步。 问题2考查你堆栈和逆波兰式。 问题3不知道是让你自己实现算法还是用现成的,很尴尬的题目。 感觉不是微软的,像三流作坊的面试题,lz如实招来。
楼主不是说了是微软中国吗? 我怎么感觉你的每一句话中都带有蔑视别人的倾向?来,说说你在哪家公司,说出来吓吓我!
xuan.ye 2012-12-10
  • 打赏
  • 举报
回复
这题很经典,也很考量功底。
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
这是哪家的面试题啊? 第二题不知道你是要结果还是要过程,要结果的话 string str = "{[(10+3)*18-24/8]*(48+37)}/3"; str = Regex.Replace(Regex.Replace(str, @"\[|{", "("), @"\]|}", ")"); object s = new DataTable().Compute(str, ""); 要过程那就看一下逆波兰表达式,自己慢慢写吧。 第三题用正则或json.net都可以
dalmeeme 2012-12-09
  • 打赏
  • 举报
回复
		string s = @"{""people"":[
        {""firstName"":""Brett"",""lastName"":""Mclaughlin"",""email"":""aaa""},
        {""firstName"":""Jhon"",""lastName"":""Hunter"",""email"":""bbb""},
        {""firstName"":""Jason"",""lastName"":""Harold"",""email"":""ccc""},]}";
		MatchCollection matches = Regex.Matches(s, @"(?is)(?<={""people"":\[.*?){""firstName"":""(?<firstName>[^,]+)"",""lastName"":""(?<lastName>[^,]+)"",""email"":""(?<email>[^,]+)""},(?=.*?\]})");
		List<People> peopleList = new List<People>();
		foreach (Match match in matches)
		{
			People people = new People();
			people.FirstName = match.Groups["firstName"].Value;
			people.LastName = match.Groups["lastName"].Value;
			people.Email = match.Groups["email"].Value;
			peopleList.Add(people);
		}
		foreach (People people in peopleList)
			Response.Write(string.Format("FirstName:{0}----LastName:{1}----Email:{2}<br/>", people.FirstName, people.LastName, people.Email));
threenewbee 2012-12-09
  • 打赏
  • 举报
回复
这题目还不如那个贩卖码奴的“蚊子创新”呢。与其半年都在研究这些面试题,还不如正儿八经修炼内功,你说呢。
threenewbee 2012-12-09
  • 打赏
  • 举报
回复
问题1就是快速排序的第一步。 问题2考查你堆栈和逆波兰式。 问题3不知道是让你自己实现算法还是用现成的,很尴尬的题目。 感觉不是微软的,像三流作坊的面试题,lz如实招来。
happy664618843 2012-12-09
  • 打赏
  • 举报
回复
引用 3 楼 dalmeeme 的回复:
C# code?12345678910111213141516 string s = @"{""people"":[ {""firstName"":""Brett"",""lastName"":""Mclaughlin"",""email"":""aaa""}, {""firstName"":""Jhon"",""lastName……
不错 但有点抽象 哈哈 谢谢
happy664618843 2012-12-09
  • 打赏
  • 举报
回复
引用 5 楼 caozhy 的回复:
问题1就是快速排序的第一步。 问题2考查你堆栈和逆波兰式。 问题3不知道是让你自己实现算法还是用现成的,很尴尬的题目。 感觉不是微软的,像三流作坊的面试题,lz如实招来。
是上海这边 Microsoft 面试题
happy664618843 2012-12-08
  • 打赏
  • 举报
回复
引用 1 楼 q107770540 的回复:
mark
兄弟 可以帮我看看第三个题吗
q107770540 2012-12-06
  • 打赏
  • 举报
回复
mark

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧