http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 7642|回复: 6
打印 上一主题 下一主题

[C#语言基础] 一个面试题,有一个字符串,要求:1、判断每个字符出现的次数,并列出

[复制链接]
跳转到指定楼层
楼主
发表于 2013-10-15 11:13:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
苏飞写的源码下载


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











1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
沙发
发表于 2013-10-15 11:18:40 | 只看该作者
我先抢个位置,一会在看
板凳
发表于 2013-10-15 11:18:56 | 只看该作者
受教了,学习中……
地板
发表于 2013-10-15 11:46:29 | 只看该作者
我只是路过打酱油的。
5
发表于 2013-10-15 11:53:22 | 只看该作者
受教了,学习中……
6
发表于 2013-10-15 13:34:59 | 只看该作者
很喜欢这样的小算法  无聊的时候写着玩不错
7
发表于 2014-5-17 20:03:34 | 只看该作者
List<stringitem> cslist = slist.Where(f => f.s == cs).ToList<stringitem>();
这句没看懂!!!!
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-19 11:49

© 2014-2021

快速回复 返回顶部 返回列表