Leeee 题解分享 · 2025/2/10
拓拓的字符串压缩 - 题解
``` #include <bits/stdc++.h> using namespace std; int main() { string str; cin >> str; int sum = 1; for (int i = 0; i < (int)str.length(); i++) { if (str[i] == str[i + 1]) sum++; else { cout << str[i] << sum; sum = 1; } } return 0; } ```
查看全文
0 0 1 0
kunshao 题解分享 · 2025/3/6
拓拓的字符串压缩 - 题解
``` /* 思路分析: 思路一(error): 1 将aabbbaad分割成aa bbb aa d; X 利用stringstream A(B) 函数进行分割 string获取字符串 .c_str()函数进行字符串转换 strcpy() 函数进行复制 也可以用 .copy函数 利用循环记录字符数量 拼接到新的字符串 加上空格 2 将aa bbb aa d转换成a2 b3 a2 d1; 提取每一个字符串第一个字符 在后面加上字符串的长度 sizeof() 3 将a2 b3 a2 d1链接起来形成a2b3a2d1。 在第二步用循环输出 思路二: 1. 用一个字符串接收数据 str 2. 循环嵌套 外循环遍历整个字符串注意.size()函数数据类型为size_t 所以循环变量定义时也要用size_t size_t i = 0; 内循环依次遍历对比字符char str1 直到str1与后面字符不同时停止内循环 相同则count++ 变量i++ 依次往后遍历对比 3. 内循环结束后将得到的字符和数量添加到新的字符串后 str3 字符和数量分开添加 字符用 push_back() 数字用 to_string() */ #include <bits/stdc++.h> using namespace std; int main() { //字符串接收一行数据 string str; getline(cin , str); string str2; //新的字符串 size_t i = 0; /* 这里,input.size() 返回的是 size_t 类型,而 i 是 int 类型。 如果字符串非常大(接近 size_t 的最大值),可能会导致类型转换问题。 */ //循环嵌套 while(i < str.size()) { //遍历每个字符 //用字符变量来遍历 char s = str[i]; size_t count = 0; //记录重复数量 while( str[i] == s && i < str.size()) { //统计重复字符 count++; i++; } //1将得到的字符和数量拼接到新的字符串上面 //str2 += string(count , s) + " "; //2将得到的字符push_back()和数量to_string()进行拼接 str2.push_back(s); str2 += to_string(count); } cout << str2; return 0; } ```
查看全文
0 0 0 1
sasigiii 题解分享 · 2025/2/3
拓拓的字符串压缩 - 题解
``` #include<bits/stdc++.h> using namespace std; int main() { string input; cin >> input; string output; int len = input.size(); char temp = input[0]; int count = 1; for(int i = 1; i <= len; i++) { // 如果后面的字符与前面的一样 if(input[i] == temp) { count++; } else { output+=temp; output+=to_string(count); temp=input[i]; count = 1; } } cout << output; } ```
查看全文
0 0 0 1
yuri01 题解分享 · 2024/12/29
拓拓的字符串压缩 - 题解
```cpp #include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { string s; cin >> s; // ll lens = s.size(); string ans = ""; char t = s[0]; ll cnt = 0; for (int i = 0; i < s.size(); i++) { if (i - 1 >= 0 && s[i] != t) { ans += t; ans += to_string(cnt); cnt = 0; } t = s[i]; cnt++; } ans += t; ans += to_string(cnt); cout << ans << endl; return 0; } ```
查看全文
0 0 0 1
lingzhen 题解分享 · 2024/4/12
拓拓的字符串压缩 - 题解
``` #include<bits/stdc++.h> using namespace std; string s; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>s; for(int i=0;i<s.size();){ int ans=1; int j=i+1; while(s[j]==s[i]){ ans++; j++; } cout<<s[i]<<ans; i=j; } } ```
查看全文
0 0 0 1
CQS 题解分享 · 2025/3/10
拓拓的字符串压缩 - 题解
``` #include <iostream> #include <string> using namespace std; int main() { string s; cin >> s; string str; int cnt = 1; for (int i = 1; i < s.size(); i++) { if (s[i] == s[i - 1]) { cnt++; } else { str += s[i - 1] + to_string(cnt); cnt = 1; } } str += s.back() + to_string(cnt); cout << str <<endl; return 0; } ```
查看全文
0 0 0 0
先知 题解分享 · 2025/1/19
拓拓的字符串压缩 - 题解
include include using namespace std; int main() { int p = 0, q = 1, num = 1; string str; stringstream ss; cin >> str; while (q < str.size()) { if (str[p] == str[q]) { num++; if (q == str.size() - 1) { ss << str[p] << num; } q++; } else { if(q!=str.size()-1){ ss << str[p] << num; p = q;q = q + 1;num = 1; } else { ss << str[p] << num; num = 1; ss << str[q] << num; q++; } } } cout << ss.str(); return 0; }
查看全文
0 0 0 0
Liopen 题解分享 · 2024/4/14
拓拓的字符串压缩 - 题解
``` #include<cstdio> #include<iostream> using namespace std; int main(){ string s; cin>>s; int len=s.length(); char now=s[0]; int count=1; for(int i=1;i<len;++i){ if(s[i]==s[i-1]){ count++; } else{ cout<<now<<count; count=1; now=s[i]; } } cout<<now<<count; return 0; } ```
查看全文
0 0 0 0
yuuki 题解分享 · 2024/4/13
拓拓的字符串压缩 - 题解
``` s = input() n = len(s) t = 1 ans = 0 for i in range(n-1): if s[i]==s[i+1]: t+=1 else: print(s[i],end = "") print(t,end = "") t=1 print(s[i+1],end = "") print(t,end = "") ```
0 0 -1 0