在给定字符串里查找出现频率最高的字符
2012-11-04 23:47
225 查看
看到的一道题目,现在用这种复杂,低效率的方法完成,因为本人也没学过算法,明天研究下用什么方法才能提高效率完成。。。。
public string searchchar(string s)
{
ArrayList al = new ArrayList();//定义一个动态数组,为了接收有多个相同频率的字符
string maxs = ""; //定义要返回的字符,即频率最高的
int maxnum=0;//出现频率次数
for (int j = 0; j < s.Length; j++)//遍历每个字符
{
char c=s[j];
int max2=0;//定义遍历到现有的字符出现字符的频率
for(int i=0;i<j;i++)//现有字符与之前字符比较
{
if (c == s[i])//如果有重复字符了
{
max2 = max2 + 1 ;//字符频率+1
if (max2 == maxnum)//如果跟总字符频率一致,则添加到数组
{
al.Add(c);
}
if (max2 > maxnum)//如果大于总字符频率,清除数组,添加新高频率字符
{
al.RemoveRange(0, al.Count);
maxnum = max2;
al.Add(c);
}
}
}
}
for (int m = 0; m < al.Count; m++)//不解释
{
maxs += al[m];
}
return maxs;
}
public string searchchar(string s)
{
ArrayList al = new ArrayList();//定义一个动态数组,为了接收有多个相同频率的字符
string maxs = ""; //定义要返回的字符,即频率最高的
int maxnum=0;//出现频率次数
for (int j = 0; j < s.Length; j++)//遍历每个字符
{
char c=s[j];
int max2=0;//定义遍历到现有的字符出现字符的频率
for(int i=0;i<j;i++)//现有字符与之前字符比较
{
if (c == s[i])//如果有重复字符了
{
max2 = max2 + 1 ;//字符频率+1
if (max2 == maxnum)//如果跟总字符频率一致,则添加到数组
{
al.Add(c);
}
if (max2 > maxnum)//如果大于总字符频率,清除数组,添加新高频率字符
{
al.RemoveRange(0, al.Count);
maxnum = max2;
al.Add(c);
}
}
}
}
for (int m = 0; m < al.Count; m++)//不解释
{
maxs += al[m];
}
return maxs;
}
相关文章推荐
- 查找字符串中出现频率最高的字符和次数
- 给定一个字符串如何判断该字符串中某一字符出现的频率并找出出现频率最高的字符和频率
- Java 求字符串中出现频率最高字符
- 统计字符串中出现频率最高的字符
- CSDN上一篇帖子:用最少的代码从一个字符串中找到出现频率最高的字符
- 给定一个file, 查找出里面出现频率最高的10个单词
- 实现一个控制台程序,给定一段英文字符串,统计其中各个英文单词(4字符以上含4字符)的出现频率。
- Java 字符串计算频率出现最高的字符
- 编写一个函数,它在一个字符串中进行搜索,查找所有在一个给定字符集合中出现的字符
- 统计字符串里面出现频率最高的字符
- JS判断字符串中出现频率最高的字符的个数
- 统计字符串中出现频率最高的字符
- 最大堆---实现一个简化的搜索提示系统。给定一个包含了用户query的日志文件,对于输入的任意一个字符串s,输出以s为前缀的在日志中出现频率最高的前10条query。
- 请编写一个函数,它在一个字符串中进行搜索,查找所有 在一个给定字符集合中出现的字符。
- 函数在一个字符串中进行搜索,查找所有在一个给定字符集合中出现的字符,函数原型:char *find_char( char const *source, char const *chars);
- JS判断字符串中出现频率最高的字符的个数
- 求一个字符串中出现频率最高的字符
- 找出字符串中出现频率最高的字符
- 给定一个字符串,查找该字符串中第一个重复出现的字符索引。要求:时间复杂度为O(n)。
- Java 字符串计算频率出现最高的字符