- 积分
- 40165
- 好友
- 记录
- 主题
- 帖子
- 听众
- 收听
|
苏飞写的源码下载
WindowsFormsApplication1.rar
(38.17 KB, 下载次数: 238)
♂[北京]SillyPGM() 10:35:56
比如http://www.sufeinet.com/某字符串
1、判断每个字符出现的次数,并列出
2、判断是否有连续重复的字符,并列出重复的字符以及重复的个数
♂[北京]SillyPGM() 10:36:14
这个题用什么方法最简单
♂[北京]SillyPGM() 10:36:31
@♂[北京]-Ro4ters 字典?
♂[北京]-Ro4ters() 10:37:22
因该除了字典没啥特别的了吧..
♂[北京]SillyPGM() 10:37:38
这不是讨论一下。
♂[北京]SillyPGM() 10:38:06
连续重复,咋判断
♂[北京]SillyPGM() 10:38:16
与上一个对比?
♂¤好孩子¤ () 10:38:22
用数据结构里的分块查找最好
♂¤好孩子¤ () 10:38:32
数组实现最快
♂[北京]SillyPGM() 10:38:42
数组?
♂¤好孩子¤ () 10:38:52
猜的
♂[北京]SillyPGM() 10:39:02
数组咋统计啊
♂¤好孩子¤ () 10:39:03
当时学数据结构就这么弄的
♂站长苏飞() 10:39:22
这个直接一个循环就完了吧,把重复的加到一个数组中的某一项,最后输出重复数大于1的就是了,
♂[北京]-Ro4ters() 10:39:34
正则会不会更快一点.
♂站长苏飞() 10:40:06
没办法用正则,这个题我见过,早先面试的时候见过这个
♂[北京]SillyPGM() 10:40:08
正则,咋写呢
♂[北京]SillyPGM() 10:40:21
正则无从下手,表示
♂¤好孩子¤ () 10:40:44
而且简单的不要用正则,效率反而低
♂[北京]-Ro4ters() 10:40:59
我以前见过一个linq的.
♂[北京]SillyPGM() 10:41:08
这个看着简单
♂[北京]SillyPGM() 10:41:13
不用字典的话,很麻烦
♂[北京]-Ro4ters() 10:41:14
var query = key.Split(',').GroupBy(x => x).OrderBy(x => x.Count()).Select(x => x.Key).Take(3);
foreach (var item in query)
Response.WriteLine(item);
♂[北京]SillyPGM() 10:41:18
我认为
♂[北京]-Ro4ters() 10:41:31
就这个..但是我不会linq..所以完全看不明白...
♂[北京]SillyPGM() 10:41:58
我也不会linq
♂[北京]-Ro4ters() 10:41:58
var list = Regex.Split(key, @"[,,]", RegexOptions.IgnorePatternWhitespace). 这是正则
♂站长苏飞() 10:43:00
看错题了吧,怎么能用,分开呢,题里字符不一定有,啊
♂[北京]SillyPGM() 10:43:31
这个不符合
♂[北京]SillyPGM() 10:45:37
我只能用字典,其他的办法,我暂时想不到,也解决不了。
♂[北京]-Ro4ters() 10:45:56
他那个是数组..
♂[北京]-Ro4ters() 10:46:02
错了.
♂[北京]-Ro4ters() 10:46:06
是分成数组了.
♂[北京]-Ro4ters() 10:46:28
不是大S说的分域名...
♂[北京]-Ro4ters() 10:49:11
http://bbs.csdn.net/topics/390480748 就这帖子.我还收藏来的.
♂[北京]SillyPGM() 10:49:41
不是一个题
♂[北京]SillyPGM() 10:49:54
@♂[北京]-Ro4ters 你发的这个,有逗号分隔
♂[北京]SillyPGM() 10:50:02
我发的那个是每个字符
♂[北京]-Ro4ters() 10:50:16
toarray啊.
♂[北京]-Ro4ters() 10:50:20
不也成数组了么
♂[北京]SillyPGM() 10:50:49
不光统计,还有连续重复
♂站长苏飞() 11:01:04
那要是有两次连续的怎么统计,
♂[北京]SillyPGM() 11:02:43
设定一个临时变量
♂[北京]SillyPGM() 11:02:58
让下一个与前一个对比。如果相同,变量值不变
♂[北京]SillyPGM() 11:03:03
只是计数+1
♂站长苏飞() 11:03:08
我有个程序能统计出一次连续的,
♂[北京]SillyPGM() 11:03:11
当对比到不同的,改版临时变量的值
♂站长苏飞() 11:03:14
和你说的需求
♂[北京]SillyPGM() 11:03:45
我是用两个字典完成
♂[北京]SillyPGM() 11:03:50
一个字典放全部统计
[北京]SillyPGM() 11:03:59
一个字典放连续重复统计
♂站长苏飞() 11:04:35
你没明白我的意思,我是比如333fdsf33这里面的3取那个连续次数
♂站长苏飞() 11:04:38
前后都有
♂[北京]SillyPGM() 11:04:53
明白了
♂[北京]SillyPGM() 11:05:08
这个情况倒是,还没考虑到
♂站长苏飞() 11:05:26
如果不考虑这个可以直接用我的代码就行了
♂[北京]SillyPGM(1545415453) 11:05:47
嗯,考虑的话,就要按需求了吧。
♂站长苏飞() 11:05:53
string s = "12333fsfd1233";
List<stringitem> slist = new List<stringitem>();
for (int i = 0; i < s.Length; i++)
{
string cs = s.Substring(i, 1).Trim();
List<stringitem> cslist = slist.Where(f => f.s == cs).ToList<stringitem>();
if (cslist.Count > 0)
{
cslist[0].n++;
//连续
if (i - cslist[0].i == 1)
{
cslist[0].ln++;
}
}
else
{
slist.Add(new stringitem() { s = cs, n = 0, i = i });
}
}
foreach (var item in slist)
{
richTextBox1.AppendText(item.s + ":" + item.n+":"+item.ln + "\r\n");
}
♂[北京]-Ro4ters() 11:05:56
飞哥,你这个是用啥实现的?
♂站长苏飞() 11:05:58
public class stringitem
{
public string s { get; set; }
public int n { get; set; }
public int i { get; set; }
public int ln { get; set; }
}
♂[北京]SillyPGM() 11:06:01
就是 连续重复的字符,出现频率最高的
♂站长苏飞() 11:06:06
这些代码
♂站长苏飞() 11:06:13
这是我当时面试时写的
♂站长苏飞() 11:06:18
这个可以统计到
♂[北京]-Ro4ters() 11:06:23
也是linq啊
♂[北京]SillyPGM() 11:06:24
嗯,我复制下来,学习一下。
♂站长苏飞() 11:06:45
♂站长苏飞() 11:06:52
等会儿我发网上,大家自己看
♂[北京]SillyPGM() 11:07:16
嗯
|
|