A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘云东 中级黑马   /  2013-10-15 10:27  /  3296 人查看  /  18 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘云东 于 2013-10-16 00:12 编辑

比如bbs.itheima.com某字符串
1、判断每个字符出现的次数,并列出
2、判断是否有连续重复的字符,并列出重复的字符以及重复的个数。


这是一个题,是两个要求。


评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

18 个回复

倒序浏览

回帖奖励 +2

本帖最后由 夏闯富 于 2013-10-15 16:23 编辑

1.判断每个字符出现的次数:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;

  6. namespace ConsoleApplication1
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             Console.WriteLine("请输入一行字符串:");
  13.             string Str = Console.ReadLine();
  14.             var source = Str.ToArray().GroupBy(a => a).Select(a => new { count = a.Count(), key = a.Key }).ToArray();
  15.             foreach (var s in source)
  16.             {
  17.                 Console.WriteLine("字符"+s.key + "出现的次数:" + s.count);
  18.             }
  19.             Console.ReadKey();
  20.         }
  21.     }
  22. }
复制代码
回复 使用道具 举报

回帖奖励 +2

  1.             Console.WriteLine("请输入要检测的字符串");
  2.             string str = Console.ReadLine();
  3.             string strNoRepeat = string.Empty;
  4.             for (int i = 0; i < str.Length; i++)    //去掉字符串中重复出现的字符
  5.             {
  6.                 //当新字符串已包含第i个字符时,直接进入下一次循环
  7.                 if (strNoRepeat.Contains(str[i].ToString()))
  8.                 {
  9.                     continue;
  10.                 }
  11.                 strNoRepeat += str[i];
  12.             }
  13.             int[] times=new int[strNoRepeat.Length];    //用来保存每个字符出现的次数
  14.             for (int i = 0; i < strNoRepeat.Length; i++)
  15.             {
  16.                 for (int j = 0; j < str.Length; j++)
  17.                 {
  18.                     if (strNoRepeat[i] == str[j])
  19.                     {
  20.                         times[i]++; //当字符重复出现时次数加1
  21.                     }
  22.                 }
  23.                 Console.WriteLine();
  24.                 Console.Write("{0}出现{1}次\t", strNoRepeat[i], times[i]);
  25.             }
  26.             int timeRepeat = 0; //统计连续出现的次数
  27.             //当第i个字符等于第i-1个时,连续出现次数加1;
  28.             //当不相等时,判断连续出现次数是否大于1,大于1就输出统计的次数,并将次数清零
  29.             for (int i = 1; i < str.Length; i++)
  30.             {
  31.                 if (str[i] == str[i - 1])
  32.                 {
  33.                     timeRepeat++;
  34.                 }
  35.                 else if (timeRepeat >= 1)
  36.                 {
  37.                     Console.WriteLine("{0}连续出现{1}个",str[i-1],timeRepeat+1);
  38.                     timeRepeat = 0;
  39.                 }
  40.             }
  41.             Console.ReadKey();
复制代码
小白思路,不要见笑。。。

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

回复 使用道具 举报
本帖最后由 夏闯富 于 2013-10-15 17:05 编辑

2.判断是否有连续重复的字符,并列出重复的字符以及重复的个数
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;

  6. namespace ConsoleApplication2
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             Console.WriteLine("请输入一行字符串:");
  13.             string Str = Console.ReadLine();
  14.             char[] c = Str.ToArray();

  15.             int sum = 0;
  16.             int a = 0;
  17.             for (int i =0; i < c.Length -1; i++)
  18.             {
  19.                 if (c[i] == c[i+1])
  20.                 {
  21.                     
  22.                     sum++;
  23.                     a = sum;
  24.                     if (i == c.Length - 2)
  25.                     {
  26.                         Console.WriteLine(c[i] + "后有"+ a+ "个连续相同的数");
  27.                     }
  28.                     continue;
  29.                 }
  30.                 else
  31.                 {
  32.                     Console.WriteLine(c[i] + "后有" + a + "个连续相同的数");
  33.                     sum = 0;
  34.                     a = sum;
  35.                     if (i == c.Length - 2)
  36.                     {

  37.                         Console.WriteLine(c[i + 1] + "后有" + a + "个连续相同的数");
  38.                     }
  39.                   
  40.                 }
  41.                
  42.             }
  43.             Console.ReadKey();
  44.         }
  45.     }
  46. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1 同学给你加分了!好好学习!蔡蔡和叶叶在黑马.

查看全部评分

回复 使用道具 举报

回帖奖励 +2

一楼的就可以解决楼主的问题!
回复 使用道具 举报

回帖奖励 +2

1、判断每个字符出现的次数,并列出
  1.         static void Main(string[] args)
  2.         {
  3.             Dictionary<char, int> dic = new Dictionary<char, int>();
  4.             Console.WriteLine("请输入一句话");
  5.             string str = Console.ReadLine();
  6.             for (int i = 0; i < str.Length; i++)
  7.             {
  8.                 char ch = str[i];
  9.                 if (dic.ContainsKey(ch))
  10.                 {
  11.                     dic[ch]++;

  12.                 }
  13.                 else
  14.                 {
  15.                     dic.Add(ch, 1);
  16.                 }
  17.             }
  18.             foreach (KeyValuePair<char, int> temp in dic)
  19.             {
  20.                 Console.WriteLine(temp.Key + ":" + temp.Value);

  21.             }
  22.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

回复 使用道具 举报
ˋ初°见 发表于 2013-10-15 19:28
1、判断每个字符出现的次数,并列出

条件有2个,是一个题,把另一半也发出来。
回复 使用道具 举报
夏闯富 发表于 2013-10-15 16:24
2.判断是否有连续重复的字符,并列出重复的字符以及重复的个数

你分别写了三份代码,但这是一个题,是两个要求。
我认为用两个字典,可以同时解决这些,一个字典存放全部统计数据,另一个字典存放连续重复数据。你认为如何。
另外这个题,我发现了一个BUG,继续跟帖,我会更新。
回复 使用道具 举报
刘云东 发表于 2013-10-15 19:47
条件有2个,是一个题,把另一半也发出来。

第二要求,我不会呀,我只会第一个
回复 使用道具 举报

回帖奖励 +2

如果问题解决,请及时把分类修改为“已解决”,黑马有你更精彩!
回复 使用道具 举报
刘云东 发表于 2013-10-15 19:52
你分别写了三份代码,但这是一个题,是两个要求。
我认为用两个字典,可以同时解决这些,一个字典存放全 ...

每个人的思维和编程思想千差万别,期待你 更新更高效 更优的解决方法...
继续顶一下!
回复 使用道具 举报
曹华 中级黑马 2013-10-15 22:41:14
12#

回帖奖励 +2

夏闯富 发表于 2013-10-15 12:52
1.判断每个字符出现的次数:

感觉你对语言的使用比较好。
回复 使用道具 举报

回帖奖励 +2

本帖最后由 猫咪不吃糖 于 2013-10-16 01:14 编辑

有个小bug,RepeatChar 初值是空格,这个不能null,{:soso_e101:} ;
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;

  5. namespace Dic1
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             string str;
  12.             char RepeatChar = ' ';   //当前重复字符
  13.             int RepeatCount = 1;    //当前重复字符重复次数
  14.             int repLength = 0;  //出现几个连续重复字符
  15.             Dictionary<char, int> dic = new Dictionary<char, int>();
  16.             List<char> repChar = new List<char>();
  17.             List<int> repCount =new List<int>();
  18.             //输入字符串
  19.             Console.Write("请输入字符串:");
  20.             str = Console.ReadLine();
  21.             //统计每个字符出现次数
  22.             foreach (char a in str)
  23.             {
  24.                 //统计每个字符出现次数
  25.                 if(dic.ContainsKey(a)) dic[a]++;
  26.                 else dic.Add(a,1);
  27.                 //统计连续重复
  28.                 if (RepeatChar != a)
  29.                 {   //未连续重复
  30.                     RepeatChar = a;
  31.                     RepeatCount = 1;
  32.                 }
  33.                 else
  34.                 {   //连续重复,添加和计数
  35.                     RepeatCount++;
  36.                     if (RepeatCount == 2)
  37.                     {   //第二次重复,添加
  38.                         repLength++;
  39.                         repChar.Add(a);
  40.                         repCount.Add(2);
  41.                     }
  42.                     else
  43.                     {   //多次重复
  44.                         repCount[repLength - 1] = RepeatCount;
  45.                     }
  46.                 }
  47.             }

  48.             //输出每个字符出现的次数
  49.             foreach(KeyValuePair<char,int> key in dic)
  50.             {
  51.                 Console.WriteLine("字符"+key.Key+"出现"+key.Value+"次。");
  52.             }

  53.             //输出连续重复的字符和重复次数
  54.             for (int i = 0; i < repLength; i++)
  55.             {
  56.                 Console.WriteLine("字符" + repChar[i] + "连续重复" + repCount[i] + "次。");
  57.             }

  58.             Console.ReadKey();
  59.         }
  60.     }
  61. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
haxyek + 1

查看全部评分

回复 使用道具 举报
曹华 发表于 2013-10-15 22:41
感觉你对语言的使用比较好。

呵呵,多多练习,你也可以
回复 使用道具 举报
haxyek 金牌黑马 2013-10-16 20:18:18
15#

回帖奖励 +2

  1. namespace 小明
  2. {
  3.         class Program
  4.         {
  5.                 /// <summary>
  6.                 /// 1、判断每个字符出现的次数,并列出
  7.                 /// </summary>
  8.                 /// <param name="args"></param>
  9.                 static void Main(string[] args)
  10.                 {
  11.                         string str = "bbs.ithhheimha.com";
  12.                         for (int i = 0; i < str.Length; i++)
  13.                         {
  14.                                 char tmp = str[i];
  15.                                 bool repeat = false;
  16.                                 string[] tmpstr;
  17.                                 tmpstr = str.Split(tmp);
  18.                                 for (int j = 0; j < i; j++)
  19.                                 {
  20.                                         if (str[i] == str[j])
  21.                                         {
  22.                                                 repeat = true;
  23.                                                 break;
  24.                                         }
  25.                                 }
  26.                                 if (repeat == false)
  27.                                 {
  28.                                         Console.WriteLine(str[i] + " " + (tmpstr.Length - 1).ToString());
  29.                                 }

  30.                         }
  31.                         ///2、判断是否有连续重复的字符,并列出重复的字符以及重复的个数。

  32.                         Console.WriteLine("===========");
  33.                         int[] geshu = new int[str.Length];
  34.                         for (int i = 0; i < str.Length; i++)
  35.                         {
  36.                                 for (int j = 1; j < str.Length - i; j++)
  37.                                 {
  38.                                         if (str[i] == str[i + 1])
  39.                                         {
  40.                                                 i++;
  41.                                                 continue;
  42.                                         }
  43.                                         else
  44.                                         {
  45.                                                 geshu[i] = j;
  46.                                                 break;
  47.                                         }
  48.                                 }
  49.                         }
  50.                         for (int m = 0; m < str.Length; m++)
  51.                         {
  52.                                 if (geshu[m] > 1)
  53.                                 {
  54.                                         Console.WriteLine(str[m] + " " + geshu[m]);
  55.                                 }
  56.                         }
  57.                         Console.ReadLine();
  58.                 }
  59.         }
  60. }
复制代码

点评

很给力  发表于 2013-10-17 11:51

评分

参与人数 1技术分 +1 收起 理由
追溯客 + 1

查看全部评分

回复 使用道具 举报 1 0

同学给你加分了!好好学习!蔡蔡和叶叶在黑马等着你!黑马有你更精彩!快点为了当土豪努力吧!
回复 使用道具 举报

回帖奖励 +2

加油~~~~~~~~
回复 使用道具 举报

回帖奖励 +2

过来看看
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马