假如给定一个String类型,如 String s = “askdfajwisflkkkalsdfjaweflasdfa”; 统计出现字符出现的次数

[复制链接]
查看11 | 回复5 | 2011-2-24 21:38:52 | 显示全部楼层 |阅读模式
如果用C 里面的指针的话 倒是 挺容易的。。 指针向后运算 就可以得到了。。没找到一个 删除该指针位置信息后面重复就可以了。。C#有点麻烦。。我就说说想法了算法你自己写了。。C#第一步:先截取每一个字符。。 存入一个List中。。 (全部字符)第二部: 将已经保存字符信息的List 遍历 比如说获取到第一个字符 a (你自己写的) 那么就是说你可以继续向下循环 知道找到另外一个a(你自己的第一个字符), 找到a 的时候 保存一下当前字符a 的位置, 并且再创建一个字段 用来存储a字符出现次数(你的a字符也要定义,个人建议使用哈希 这样子后期好查找也就是C#里面的字典 )最后删除该位置(重后面开始删) 最后 重复。...
回复

使用道具 举报

千问 | 2011-2-24 21:38:52 | 显示全部楼层
public static string PrintOrderString(string str)
{
var dict = new Dictionary();
foreach (var c in str.ToCharArray())
{...
回复

使用道具 举报

千问 | 2011-2-24 21:38:52 | 显示全部楼层
看了上面这么多回答,本来不想答的,不过偶然想起来最近看的LINQ,似乎有点用武之地。static void Main(string[] args)
{
String s = "askdfajwisflkkkalsdfjaweflasdfa";
var obj = s.OrderByD...
回复

使用道具 举报

千问 | 2011-2-24 21:38:52 | 显示全部楼层
最近也在看linq楼上的写法挺喜欢的。不过2楼的貌似也不错,受教了...
回复

使用道具 举报

千问 | 2011-2-24 21:38:52 | 显示全部楼层
思路:创建一个list,然后循环,通过list.contains()判断是否已经存在如果存在则说明重复,然后在创建数组将其add进入,然后通过一个大的list将你创建小的list添加,最后得出大的list的长度是重复在字符的数目,每个小list的长度则是重复的次数,这样在排序输出...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行