日期:2014-05-18  浏览次数:20951 次

求:怎样统计一个字符串中哪个字符出现的频率最高?
一道面试题:如:“alsdk 0poqwer rkj kerie qwel; wejw ”在这个字符串中,找出出现次数最多的字母,并计算次数?

------解决方案--------------------
楼上正解
------解决方案--------------------
SQL code

declare @ddd nvarchar(2000)
declare @ll int
set @ddd='alsdk 0poqwer rkj  kerie qwel;  wejw ';
set @ddd=rtrim(ltrim(@ddd));--去空格
set @ddd=replace(@ddd,' ','');--去空格
set @ll=len(@ddd);--求总长度
select @ll
select 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;
}

//排序...自己写吧。