请编写一个字符串归一化程序,统计字符串中相同字符出现的次数,并按字典序输出字符及其出现次数。

通过键盘输入一串小写字母(a~z)组成的字符串。

请编写一个字符串归一化程序,统计字符串中相同字符出现的次数,并按字典序输出字符及其出现次

数。

例如字符串"babcc"归一化后为"a1b2c2"

输入描述:

每个测试用例每行为一个字符串,以’\n’结尾,例如cccddecca

输出描述:

输出压缩后的字符串ac5d2e

示例1

输入

dabcab

输出

a2b2c1d1

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Solution{
    public static void main(String[] args) throws IOException {
        InputStreamReader input = new InputStreamReader(System.in);  // 字节流转换为字符流
        BufferedReader buffer = new BufferedReader(input);   // 放入BufferedReader使得读取速度更快
        int []count = new int[26];   // 创建一个数组用于计数
        char []charArray = buffer.readLine().toCharArray();  // 将输入的字符串按行读取后转换为字符数组
        for(int i=0; i<charArray.length; i++){
            count[charArray[i]-'a']++;  // 遍历字符数组,计数各个字符出现的次数
        }
        StringBuffer sb = new StringBuffer();
        for(int i=0; i < 26; i++){  // 将26个子母中存在的字母进行遍历输出
            if(count[i] !=0){
                sb.append((char)(i+'a'));  // 强制类型转换为字符
                sb.append(count[i]);
            }
        }
        System.out.println(sb.toString());
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值