在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/C  C++  HTML/ PAT乙級 1078. 字符串壓縮與解壓 (20),第4個測試點一直無法通過

PAT乙級 1078. 字符串壓縮與解壓 (20),第4個測試點一直無法通過

題目傳送門:https://www.patest.cn/contest...

樣例都通過了,實在是找不到問題出在哪里哭唧唧
代碼如下:

#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main(){
    char c,t;
    cin>>c;
    getchar();
    string s,ans;
    getline(cin,s);
    int cnt;
    if(c=='C'){
        cnt=1;
        for(int i=0;i<s.length();i++){
            if(s[i]==s[i+1]){
                cnt++;
            }else{
                if(cnt!=1){
                    ans+=(char)(cnt+'0');
                    cnt=1;
                }
                ans+=s[i];
            }
        }
    }else if(c=='D'){
        cnt=0;
        for(int i=0;i<s.length();i++){
            if(isdigit(s[i])){
                cnt=cnt*10+(s[i]-'0');
            }else{
                if(cnt!=0){
                    for(int j=0;j<cnt;j++){
                        cout<<s[i];
                    }
                }else{
                    cout<<s[i];
                }
                cnt=0;
            }
        }
    }
    cout<<ans;
    return 0;
}

圖片描述

回答
編輯回答
祉小皓

ac代碼如下:

#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main(){
    char c,t;
    cin>>c;
    getchar();
    string s,ans;
    getline(cin,s);
    int cnt;
    if(c=='C'){
        cnt=1;
        for(int i=0;i<s.length();i++){
            if(s[i]==s[i+1]){
                cnt++;
            }else{
                if(cnt!=1){
                    cout<<cnt; //不能用ans+=(char)(cnt+'0'); 考慮cnt>9的情況
                    cnt=1;
                }
                cout<<s[i];
            }
        }
    }else if(c=='D'){
        cnt=0;
        for(int i=0;i<s.length();i++){
            if(isdigit(s[i])){
                cnt=cnt*10+(s[i]-'0');
            }else{
                if(cnt!=0){
                    for(int j=0;j<cnt;j++){
                        cout<<s[i];
                    }
                }else{
                    cout<<s[i];
                }
                cnt=0;
            }
        }
    }
    cout<<ans;
    return 0;
}
2018年9月2日 13:07
編輯回答
孤影

大概看了一下,發(fā)現(xiàn)了幾處錯誤,在壓縮部分:

  • 循環(huán)結(jié)束條件不對。結(jié)束條件是i<s.length但里面卻去取s[i+1]
  • ans+=(char)(cnt+'0');這句在cnt>9的時候怎么辦?
2017年4月17日 15:51