力扣04 C++的to_string();JavaString类的substring

该博客主要介绍了如何实现基本的字符串压缩功能,例如将aabcccccaaa压缩为a2b1c5a3。讨论了C++和Java两种语言的代码实现,并提供了具体的代码片段。在压缩过程中,如果字符串长度没有减少,则返回原字符串。此问题涉及到字符串处理和算法设计。
摘要由CSDN通过智能技术生成

字符串压缩 https://leetcode-cn.com/problems/compress-string-lcci/

字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母。

C++

int cnt=10;
string s=to_string(cnt); 将数字转为string
Java

String S;
S.substring(0,2); 取子串
S.chatAt(i); 索引i的字符值,不可写S[i]

代码

C++

class Solution {
public:
    string compressString(string S) {
        int len=S.length();
        if(len<=1) return S;
        string S1="";
        S1+=S[0];
        int cnt=1;
        for(int i=1;i<len-1;i++)
        {
            if(S[i]==S[i-1]) cnt++;
            else{
                S1+=to_string(cnt)+S[i];
                cnt=1;
            }
        }
        if(S[len-1]==S[len-2])
        {
            cnt++;
            S1+=to_string(cnt);
        }
        else{
            S1+=to_string(cnt)+S[len-1]+to_string(1);
        }
        int len1=S1.length();
        return len<=len1?S:S1;
    }
};
Java

class Solution {
    public String compressString(String S) {
        int len=S.length();
        if(len<=1) return S;
        String S1=new String("");
        S1+=S.substring(0,1);
        int cnt=1;
        for(int i=1;i<len-1;i++)
        {
            if(S.charAt(i)==S.charAt(i-1)) cnt++;
            else{
                S1+=cnt+S.substring(i,i+1);
                cnt=1;
            }
        }
        if(S.charAt(len-1)==S.charAt(len-2)) 
        {
            cnt++;
            S1+=cnt;
        }else{
            S1+=cnt+S.substring(len-1,len)+1;
        }
        int len1=S1.length();
        return len<=len1?S:S1;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值