面试题目 字符串的去重与压缩(统计)
今天去面试时考了两个算法的题,自己在做时想复杂了,也怪自己对FrameWork框架不是太熟悉,有很多方法自己不知道,所以走了很弯路
题目如下:
//去除重复算法:输入一串字符如 ababef 将这串字符串去除重复部分得到如下结果 abef string str = Console.ReadLine(); var arryStr = str.ToCharArray(); var list = new List<char>();
foreach (var item in arryStr)
{ if (!list.Contains(item)) { list.Add(item); } } foreach (var item in list) { Console.WriteLine(item); }
//用Distinct()更简捷 直接得到结果 arryStr.Distinct();
题二
//统计重复字符串 如 eeefffkkkhjk 得到如下结果 3e3f3khjk; string zipStr = Console.ReadLine(); var charList = zipStr.ToCharArray(); var listArray = new List<char>(); foreach (var item in charList) { if (!listArray.Contains(item)) { listArray.Add(item); } } var dic = new Dictionary<string, string>(); int count = 0; foreach (var item in listArray) { foreach (var o in charList) { if (item == o) { count++; } } dic.Add(item.ToString(),count.ToString()); count = 0; } string resutl = string.Empty; foreach (var item in dic) { if (Convert.ToInt32(item.Value)<=1) { resutl += item.Key; } else { resutl += item.Key + item.Value; } } Console.WriteLine(resutl); Console.Read();
自己想想其实很简单,说到底还是自己练得太少了,面试还是有好处的,能让你清楚的明白你自己的什么样的水平,
不要停止学习的脚步,努力向上吧~~!