微软中国经典算法题 求解(上周结帖)
微软中国经典算法题 求解(下周结帖)
面试时碰到的算法题 如下:
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;
}
------解决方案--------------------
mark
------解决方案--------------------
------解决方案--------------------
问题1就是快速排序的第一步。
问题2考查你堆栈和逆波兰式。
问题3不知道是让你自己实现算法还是用现成的,很尴尬的题目。
感觉不是微软的,像三流作坊的面试题,lz如实招来。
------解决方案--------------------
这题目还不如那个贩卖码奴的“蚊子创新”呢。与其半年都在研究这些面试题,还不如正儿八经修炼内功,你说呢。
------解决方案--------------------
这是哪家的面试题啊?
第二题不知道你是要结果还是要过程,要结果的话
string str = "{[(10+3)*18-24/8]*(48+37)}/3";
str = Regex.Replace(Regex.Replace(str, @"\[
------解决方案--------------------
{", "("), @"\]
------解决方案--------------------
}", ")");
object s = new DataTable().Compute(str, "");
要过程那就看一下逆波兰表达式,自己慢慢写吧。
第三题用正则或json.net都可以
------解决方案--------------------
这题很经典,也很考量功底。
------解决方案--------------------
面试时碰到的算法题 如下:
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;
}
------解决方案--------------------
mark
------解决方案--------------------
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));
------解决方案--------------------
问题1就是快速排序的第一步。
问题2考查你堆栈和逆波兰式。
问题3不知道是让你自己实现算法还是用现成的,很尴尬的题目。
感觉不是微软的,像三流作坊的面试题,lz如实招来。
------解决方案--------------------
这题目还不如那个贩卖码奴的“蚊子创新”呢。与其半年都在研究这些面试题,还不如正儿八经修炼内功,你说呢。
------解决方案--------------------
这是哪家的面试题啊?
第二题不知道你是要结果还是要过程,要结果的话
string str = "{[(10+3)*18-24/8]*(48+37)}/3";
str = Regex.Replace(Regex.Replace(str, @"\[
------解决方案--------------------
{", "("), @"\]
------解决方案--------------------
}", ")");
object s = new DataTable().Compute(str, "");
要过程那就看一下逆波兰表达式,自己慢慢写吧。
第三题用正则或json.net都可以
------解决方案--------------------
这题很经典,也很考量功底。
------解决方案--------------------