Kattis - yoda 【字符串】
分析
给出两个串 从末尾开始对齐 每位对齐后,每一位 遍历
如果 第一串 的那位 < 第二串 的 那么 第一串的那位 就删去
如果 等于 两位 都保留
如果 大于 那么 保留 第二串的 那位
如果 最后 删完了 那一串 就输出 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");
}