分析
给出两个串 从末尾开始对齐 每位对齐后,每一位 遍历
如果 第一串 的那位 < 第二串 的 那么 第一串的那位 就删去 如果 等于 两位 都保留 如果 大于 那么 保留 第二串的 那位
如果 最后 删完了 那一串 就输出 YODA
AC代码
#include <cstdio> #include <cstring> #include <ctype.h> #include <cstdlib> #include <climits> #include <iostream> #include <algorithm> #include <cmath> #include <deque> #include <vector> #include <queue> #include <string> #include <map> #include <stack> #include <set> #include <numeric> #include <sstream> #include <iomanip> #include <limits> using namespace std; typedef long long LL; const double PI = 3.14159265358979323846264338327; const double E = 2.718281828459; const double eps = 1e-6; const int INF = 0x3f3f3f3f; const int maxn = 1e9 + 5; const int MOD = 1e9 + 7; int main() { string s1, s2; string c1 = "", c2 = ""; cin >> s1 >> s2; int len1 = s1.size(), len2 = s2.size(); int i, j; for (i = len1 - 1, j = len2 - 1; i >= 0 && j >= 0; i--, j--) { if (s1[i] < s2[j]) c2 += s2[j]; else if (s1[i] == s2[j]) { c1 += s1[i]; c2 += s2[j]; } else c1 += s1[i]; } if (i >= 0) { for ( ; i >= 0; i--) c1 += s1[i]; } if (j >= 0) { for ( ; j >= 0; j--) c2 += s2[j]; } if (c1.size()) { for (i = c1.size() - 1; i >= 0; i--) { if (c1[i] != '0' || (c1[i] == '0' && i == 0)) { cout << c1[i]; break; } } for (i-- ; i >= 0; i--) cout << c1[i]; } else cout << "YODA"; printf("\n"); if (c2.size()) { for (i = c2.size() - 1; i >= 0; i--) { if (c2[i] != '0' || (c2[i] == '0' && i == 0)) { cout << c2[i]; break; } } for (i-- ; i >= 0; i--) cout << c2[i]; } else cout << "YODA"; printf("\n"); }转载于:https://www.cnblogs.com/Dup4/p/9433257.html