Codeforces Round #455 (Div. 2) A. Generate Login

A. Generate Login
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

The preferred way to generate user login in Polygon is to concatenate a prefix of the user's first name and a prefix of their last name, in that order. Each prefix must be non-empty, and any of the prefixes can be the full name. Typically there are multiple possible logins for each person.

You are given the first and the last name of a user. Return the alphabetically earliest login they can get (regardless of other potential Polygon users).

As a reminder, a prefix of a string s is its substring which occurs at the beginning of s: "a", "ab", "abc" etc. are prefixes of string "{abcdef}" but "b" and 'bc" are not. A string a is alphabetically earlier than a string b, if a is a prefix of b, or a and b coincide up to some position, and then a has a letter that is alphabetically earlier than the corresponding letter in b: "a" and "ab" are alphabetically earlier than "ac" but "b" and "ba" are alphabetically later than "ac".

Input

The input consists of a single line containing two space-separated strings: the first and the last names. Each character of each string is a lowercase English letter. The length of each string is between 1 and 10, inclusive.

Output

Output a single string — alphabetically earliest possible login formed from these names. The output should be given in lowercase as well.

Examples
input
harry potter
output
hap
input
tom riddle
output
tomr


题意:

读题能力是真的差啊。。。愣是读了半小时没有读懂。题意就是求两个字符串的缩写,具体规则就是两个字符串,每个字符串的缩写可以是0-字符串的长度的任意长,然后合并起来,求字母顺序最小的那个

思路:

两层for循环,运用string中的 substr函数解决即可

代码:

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#define ll long long
#define maxn 10001
using namespace std;
string s,ss;
int k[26];
int a[26];
int main(){
    cin>>s>>ss;
    int x=s.length();
    int y=ss.length();
    string s1="zzzzzzzzzzzz";
    string s2;
    for(int i=0;i<x;i++){
        for(int j=0;j<y;j++){
            s2 =s.substr(0,i+1)+ss.substr(0,j+1);
            s1 = min(s1,s2);
        }
    }
    cout<<s1<<endl;
    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值