欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Azamon Web Services

程序员文章站 2022-04-30 23:41:13
...

Azamon Web Services
Azamon Web Services

题意:给你2个字符串问第一个字符串是否可以调换两个字符的位置使得其字典序小于第二个字符串。

思路:对第一个串进行排序,看他是否可能小于第二个串,之后比较排序前与排序后两串第一个不同的位置然后将原始串的该位置调换。比较调换后的串是否小于第二个字符串。

#include <bits/stdc++.h>
#define ll long long
#define INF 0x3f3f3f3f
#define mod 998244353
using namespace std;
const int N=1e5+5;
int gcd(int a,int b)
{
	return b==0?a:gcd(b,a%b);
}

int main()
{
   string a,b,c;
   int t;
   cin>>t;
   while(t--)
   {
       cin>>a>>b;
       c=a;
       sort(c.begin(),c.end());
       if(c>=b)
        cout<<"---"<<endl;
       else
       {
           if(c==a||a<b)cout<<a<<endl;
           else
           {

               for(int i=0;i<a.size();i++)
               {
                   if(a[i]!=c[i])
                   {
                       for(int j=a.size()-1;j>=0;j--)
                       {
                           if(a[j]==c[i])
                           {
                               swap(a[i],a[j]);break;
                           }

                       }
                       break;
                   }


               }
               if(a<b)
                cout<<a<<endl;
               else
                cout<<"---"<<endl;
           }
       }
   }
   return 0;
}

相关标签: CF