3条回答 默认 最新
- 三块不一样的石头 2022-10-16 15:42关注
T1
#include<iostream> using namespace std; bool cmp(char x){ if(x>='A' && x<='Z') return true; if(x>='a' && x<='z') return true; return false; } int main() { string s; getline(cin,s); int head=0,tail=s.size(),flag=0; while (head<=tail){ if(flag==0 && cmp(s[head])) flag = 1; else if(flag==1 && cmp(s[tail])) { flag = 0; char temp = s[head]; s[head] = s[tail]; s[tail] = temp; } flag == 0 ? head++ : tail--; } cout << s << endl; return 0; }
T2 (更优化,只有长度大于1才显示前方数字)
#include<iostream> using namespace std; string ZIP(string s){ string result = ""; long num = 1,length = s.size(); char flag = s[0]; for(int z=1;z<length;z++){ if(flag==s[z]) num++; else { result += flag; result += to_string(num); flag = s[z]; num = 1; } } result += flag; result += to_string(num); return result.size() < s.size() ? result : s; } // aaaaaba -> a5b1a1 int main() { string s; cin >> s; cout << ZIP(s); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录