全部评论 2

  • #include<bits/stdc++.h>
    using namespace std;

    int main()
    {
    string s,t="";
    cin >> s;
    int n,cnt=1;
    cin >> n;
    for (int i=0;i<n;i++)
    {
    for (int j=1;j<s.size();j++)
    {
    if (s[j]!=s[j-1])
    {
    t+=to_string(cnt)+s[j-1];
    cnt=1;
    }
    else
    cnt++;
    }
    t+=to_string(cnt)+s[s.size()-1];
    cnt=1;
    s=t;
    t="";
    }
    cout << s;
    return 0;
    }

    自己看

    2024-08-21 来自 广东

    0
  • 额,改了,发现逻辑有点问题,我也不知道你AC了没,我把我改了的部分给你吧,但不能用map遍历整个串,大小会叠加,我也没法改,见谅

    #include<bits/stdc++.h>
    using namespace std;
    string s;
    int n;
    map<char, int> mp;//改外面多一点大小 
    int main() {
    	cin >> s >> n;
    	while (n--) {
    		string c;
    		mp.clear();
    		for (int j = 0; j < s.length(); j++) {
    			mp[s[j]]++;
    		}
    		char tmp=0;//防重 
    		for (int j = 0; j < s.length(); j++) {
    			if (/*mp[s[j]] >= 1&&这里不用判的*/s[j]!=tmp) {
    				tmp=s[j]; 
    				c+=char(mp[s[j]]+'0');//记得加的是一个字符,不是数字 
    				c+=s[j];
    			}
    		}//这里有点大改,你可以理解下 
    		s=c;
    		cout << s << endl;
    	}
    	cout << s;
    	return 0;
    }
    

    2024-07-06 来自 浙江

    0
首页