不准调用系统方法的面试题。。。

leonliu7558168 2012-06-14 08:56:09
加精
1、给定一个字符串string str="中文字符**********************"
用程序求出现频率最高的字符,(要求写成函数,开发语言不限,不能直接调用系统方法。)


这个题如果用C#写:(一下是我问一个同学,他写的)
如果用C语言呢??我考虑的东西就很不一样了。
还有题目所说的不能直接调用系统方法,以下的C#代码中,属于直接调用系统方法吗?
class Program
{
public static string GetMostFrequency(string str)
{
List<char> strChar = new List<char>(str.Length);
List<int> strCharCount = new List<int>(str.Length);
for (int i = 0; i < str.Length;i++ )
{
char tempChar = str[i];
if (!strChar.Contains(tempChar))
{
strChar.Add(tempChar);
strCharCount.Add(0);
}
strCharCount[strChar.IndexOf(tempChar)] += 1;
}
Dictionary<char, int> dict = new Dictionary<char, int>();
for (int i = 0; i < strChar.Count; i++)
{
dict.Add(strChar[i],strCharCount[i]);
}
int maxCount = dict.Max(p=>p.Value);

var keyValuePair = dict.Select(p => p).Where(p => p.Value == maxCount);//select * from table where 最高频率=(select max(频率) from table)
string result = "";
foreach (KeyValuePair<char, int> item in keyValuePair)
{
result += " '"+item.Key + "' , 次数 " + item.Value + "\n";
}
return result;
}
static void Main(string[] args)
{
string str = " 我 我我我我我我 去去去去去去去去你你你你你你 男男女女 ";
Console.WriteLine("最高频率的字符串是: \n"+GetMostFrequency(str));
Console.ReadKey();
}
}





...全文
8012 115 打赏 收藏 转发到动态 举报
写回复
用AI写文章
115 条回复
切换为时间正序
请发表友善的回复…
发表回复
titer1 2012-08-18
  • 打赏
  • 举报
回复
[Quote=引用 43 楼 的回复:]

本题的重点在于要知道如何区分中文和英文。
中文的第一个字节>0x80.剩下的就是字符比较了。
之前出过一道题:
将包含中文和英文的文件,逆序。
[/Quote]

出题人是这么想的
titer1 2012-08-18
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 的回复:]

#!/usr/bin/env perl

use strict;
use warnings;

my $str = 'asfbdsajfdasjk;flja';
my %fq;
chomp $str;
my @words = split //, $str;
foreach my $word (@words) {
do {$fq{$word}++; next;} if ……
[/Quote]

脚本的代码这么短
titer1 2012-08-18
  • 打赏
  • 举报
回复
我的思路:
只限定一种字符,如汉字,看65535的空间
开一个65535的整形数组。//
然后扫描字符,统计字符出现次数。
最后输出计数数组中最大的那个字符。
huaye 2012-08-17
  • 打赏
  • 举报
回复
java hashMap
因茹而生 2012-08-17
  • 打赏
  • 举报
回复
[Quote=引用 110 楼 的回复:]

我是面试.net软件工程师的时候遇到这道面试题的,刚开始我也愣住了,后来是用C#写的,这道题真的很经典
[/Quote]1、先拆分字符串。。
string str="";
char[] arrs=str.toCharArray();
2、循环数组,判断每个字出现的次数
3、取出次数最多的。
因茹而生 2012-08-17
  • 打赏
  • 举报
回复
我是面试.net软件工程师的时候遇到这道面试题的,刚开始我也愣住了,后来是用C#写的,这道题真的很经典
欧亨利式结局 2012-07-11
  • 打赏
  • 举报
回复
表示有压力啊
z1481062138 2012-07-05
  • 打赏
  • 举报
回复
z1481062138 2012-07-05
  • 打赏
  • 举报
回复
YY35214818
司机 2012-07-05
  • 打赏
  • 举报
回复
不使用系统方法就是不使用语言自带的现有函数。你那种属于自己计数实现。各种语言都可以用同一种方式实现。
hefwdl123 2012-07-04
  • 打赏
  • 举报
回复
啥东西啊 详细点呗 看不懂啊
baohonglai 2012-07-04
  • 打赏
  • 举报
回复
各种语言的代码就上去了,谢谢分享,不过我是学C++的用,map应该比较好
金墨痴 2012-07-03
  • 打赏
  • 举报
回复
看不懂
KK_TDQ0511 2012-07-02
  • 打赏
  • 举报
回复
手机mark,明天电脑看
买房动力十足 2012-07-02
  • 打赏
  • 举报
回复
System.out.println()是调用系统方法吗?
  • 打赏
  • 举报
回复
没人学JAVA吗?
baobaodediaozhui 2012-07-02
  • 打赏
  • 举报
回复
在下弱爆了。。。看一半天,都没看到你们怎么处理中文字符的?
就是怎么检索中文字符的?
leonliu7558168 2012-07-01
  • 打赏
  • 举报
回复
想不到上首页了。。。呵呵!欢迎大家继续讨论!
leonliu7558168 2012-07-01
  • 打赏
  • 举报
回复
[Quote=引用 89 楼 c2606050113 的回复:]
这个问题 如果是英文字符串的话比较容易。字符出现次数统计而已(a——z)各字符串出现的次数,很简单。
中文统计之前判断是否已经统计过了,也就是说汉字总量无法确定,统计之前先要判断下。
[/Quote]
我们可以粗略统计汉字总量小于30000。。。。
c2606050113 2012-06-29
  • 打赏
  • 举报
回复
这个问题 如果是英文字符串的话比较容易。字符出现次数统计而已(a——z)各字符串出现的次数,很简单。
中文统计之前判断是否已经统计过了,也就是说汉字总量无法确定,统计之前先要判断下。
加载更多回复(68)

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧