【程序员面试宝典】-转换字符串格式为字符+连续出现的次数

转换字符串格式为原来字符串里的字符+该字符连续出现的个数,例如:1233422222 转换为1121324125(1出现1次,2出现1次,3出现2次......

与这题类似的有:一个超大文本单词列表中,统计每个单词出现的次数。

方法:

定义2个变量p,tmp,tmp一个放目前正在统计次数的字符,p放刚刚读入的字符,还要定义一个count统计当前字符出现的次数

如果tmp == p, 那么说明又读进来一个同样的字符,那么这个字符出现的次数count++

如果tmp!=p, 那么说明读进来一个新的字符,需要把原来tmp和count输出,然后把tmp置为p,count=1,开始统计p里面的字符出现的次数


代码:

#include<iostream>
using namespace std;

int main()
{
    char str[50];
    char tmp;
    int count = 0;
    cin>>str;
    char *p = str;
    tmp = *p;
    count++;
    while(*(++p)!='\0')
    {
       if(*p == tmp)//如果当前读入的字符和正在统计的一样,那么出现次数要++
       {
             count++;
             continue;
       }
       cout<<tmp<<count;//如果读入一个新的字符,就要把正在统计的字符频率输出,接下来开始统计新读入的字符的出现次数
       tmp = *p;
       count = 1;
    }
    cout<<tmp<<count;//因为读到'\0'循环退出,最后一个连续的字符序列没有输出,所以在这里追加输出
    getchar();
    getchar();
    return 0;
}


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值