求:怎样统计一个字符串中哪个字符出现的频率最高?
一道面试题:如:“alsdk 0poqwer rkj kerie qwel; wejw ”在这个字符串中,找出出现次数最多的字母,并计算次数?
[解决办法]
楼上正解
[解决办法]
- SQL code
declare @ddd nvarchar(2000)declare @ll intset @ddd='alsdk 0poqwer rkj kerie qwel; wejw ';set @ddd=rtrim(ltrim(@ddd));--去空格set @ddd=replace(@ddd,' ','');--去空格set @ll=len(@ddd);--求总长度select @llselect len(@ddd)-len(replace(@ddd,'a',''))--a的个数select len(@ddd)-len(replace(@ddd,'w',''))--w的个数
[解决办法]
可以做一个Hashtable,key为字符,value为出现的次数
遍历字符串
碰到不存在于hashtable中的字符,加到hashtable中
遇到已经存在于hashtable中的,将Value加1即可
最后找最大value对应的字符
[解决办法]
你要是在程序里处理
char[] chars=''alsdk 0poqwer rkj kerie qwel; wejw ''.toCharArray();
[解决办法]
蹭点分
- C# code
Dictionary<char, int> counter = new Dictionary<char, int>();string s = "alsdk 0poqwer rkj kerie qwel; wejw ";char max = s[0];s = s.ToLower(); // 全小写foreach (char c in s){ if (!char.IsLetter(c)) continue; // 非字母 if (counter.ContainsKey(c)) counter[c]++; else counter.Add(c, 1); if (counter[max] < counter[c]) max = c;}Console.WriteLine("出现最多的字符是:'{0}' 共出现:{1}次", max, counter[max]);
[解决办法]
次序颠倒一下,变小写是后面加的。。。
- C# code
s = s.ToLower(); // 全小写char max = s[0];
[解决办法]
string s = "alsdk 0poqwer rkj kerie qwel; wejw ";
Dictionary<string, int> d = new Dictionary<string, int>();
//List<int> number=new List<int>();
for (int i = 0; i <= s.Length; i++)
{
//number.Add(s.Split(new char[] { s[0]}).Length-1);
d["Char:"+s[0]] = s.Split(new char[] { s[0]}).Length-1;
s = s.Replace(s[0].ToString(),"");
i = 0;
}
//排序...自己写吧。