华为OD机试:字符串转换

该博客介绍了一种字符串转换的算法,将连续出现的字符转换为字符加计数的形式。例如,'aa' 转换为 'a2','22' 转换为 '21'。通过示例输入和输出,解释了算法的工作原理,并提供了 Java 代码实现。此算法适用于处理含有英文大小写字母和数字的字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

标题:字符串转换 | 时间限制:1 秒 | 内存限制:262144K | 语言限制:不限

将一个只包含英文小写字母和大写字母和阿拉伯数字的字符串,按照如下规则转换,字符串 中连续出现的字符转化为字符加上字符连续出现的次数,同一个字母的大小写认为是相等 的,结果中输出小写。

输入描述:

第一行输入一个长度为 N 的字符串,只包含英文小写字母和阿拉伯数字;0。

输出描述:

每一行输入对应一行输出,输出转换后的字符串。

示例 1

输入 aa233aaaaaaaaaaaaaaaaaaa1

输出 a22132a1911

说明

字符串中,"aa"转换为"a2"; "2"转换为"21";"33"转换为"32";"aaaaaaaaaaaaaaaaaaa"转换为

"a19"; "1"转换为"11"。

示例 2

输入 Aa2sS11

输出 a221s212

说明 'A'和'a'都认为是'a',出现了 2 次,故"Aa"转换成"a2";"2"转换为"21";"sS"转换为"s2";"11"转换 为"12"; 拼接成"a221s212".

解题思路:先把字符串toLowerCase,然后用num来记录相同字符的个数,循环一遍字符串即可。注意最后一个字符的问题,最后要加上num。

public class Test5 {
    public static void main(String[] args) {
        String str = "aa233aaaaaaaaaaaaaaaaaaa1";
        str = str.toLowerCase();
        String s = String.valueOf(str.charAt(0));
        int num = 1;
        for (int i=1;i<str.length();i++){
            String a = str.substring(i-1,i);
            String b = str.substring(i,i+1);
            if (a.equals(b)){
                num++;
            }else{
                s = s+num+b;
                num = 1;
            }
        }
        System.out.println(s+num);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值