小度有一个小写字母组成的字符串s.字符串s已经被写在墙上了.
小度还有很多卡片,每个卡片上有一个小写字母,组成一个字符串t。小度可以选择字符串t中任意一个字符,然后覆盖在字符串s的一个字符之上。小度想知道在选取一些卡片覆盖s的一些字符之后,可以得到的字典序最大的字符串是什么。
输入包括两行,第一行一个字符串s,字符串s长度length(1 ≤ length ≤ 50),s中每个字符都是小写字母
第二行一个字符串t,字符串t长度length(1 ≤ length ≤ 50),t中每个字符都是小写字母
输出一个字符串,即可以得到的字典序最大字符串
fedcba ee
feeeba
var s1 = readline();
var s2 = readline();
var newS1 = s1.split('');
var newS2 = s2.split('');
newS2 = newS2.sort().reverse();
for(var i = 0,j=0;i<newS1.length&&j<newS2.length;i++){
if(newS1[i]<newS2[j]){
newS1.splice(i,1,newS2[j]);
j++;
}
}
print(newS1.join('')); #include <iostream>
using namespace std;
#include <string>
#include <algorithm>
int main()
{
string s,t;
cin >> s >> t;
sort(t.begin(), t.end(), greater<char>());
int pos = 0;
for (int i=0; i<s.size(); i++)
{
//string的底层最后一个字符是'\0'
if (s[i] < t[pos])
{
s[i] = t[pos++];
}
}
cout << s << endl;
} import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char[] s = br.readLine().trim().toCharArray();
char[] t = br.readLine().trim().toCharArray();
Arrays.sort(t);
int i = 0, j = t.length - 1;
for(i = 0; i < s.length; i++){
if(j >= 0 && s[i] < t[j]){
s[i] = t[j];
if(j >= 0) j --;
}
}
System.out.println(new String(s));
}
} #include <bits/stdc++.h>
using namespace std;
void Sort(string &s){ int n = s.length(); for(int i=0;i<n-1;i++){ for(int j=0;j<n-i-1;j++) if(s[j]<s[j+1]) swap(s[j],s[j+1]); }
}
int main()
{ string s,t; while(cin>>s>>t){ int m=s.length(),n=t.length(); Sort(t); for(int i=0,k=0;i<m;i++){ if(s[i]<t[k]){ s[i] = t[k]; k++; } if(k==n) break; } cout<<s<<endl; } return 0;
} import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
/**
* @author wylu
*/
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char[] s = br.readLine().toCharArray();
char[] t = br.readLine().toCharArray();
Arrays.sort(t);
for (int i = t.length - 1, j = 0; i >= 0 && j < s.length; i--) {
while (j < s.length && s[j] >= t[i]) j++;
if (j < s.length) s[j++] = t[i];
}
System.out.println(new String(s));
}
}
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine(),t = sc.nextLine();
char[] cs = s.toCharArray();
char[] ts = t.toCharArray();
Arrays.sort(ts);
int n = s.length(), tn = t.length();
for (int i=0, j=tn-1; i<n && j>=0; i++) {
if (cs[i] < ts[j]) {
cs[i] = ts[j];
j--;
}
}
System.out.println(new String(cs));
}
}
#include <bits/stdc++.h>
using namespace std;
string s, t;
bool cmp(char& a, char& b){
return a > b;
}
int main() {
cin >> s >> t;
sort(t.begin(), t.end(), cmp);
for (int i = 0; i < t.size(); i++) {
for (int j = 0; j < s.size(); j++) {
if (t[i] - 'a' > s[j] - 'a') {
s[j] = t[i];
break;
}
}
}
cout << s;
} package main
import (
"fmt"
"strings"
"sort"
)
func main() {
var s,t string
fmt.Scan(&s,&t)
ss:=strings.Split(s,"")
tt:=strings.Split(t,"")
sort.Slice(tt,func(i,j int)bool{
return tt[i]>tt[j]
})
idx:=0
for i:=0;i<len(ss);i++{
if idx<len(tt)&&ss[i]<tt[idx]{
ss[i]=tt[idx]
idx++
}
}
fmt.Print(strings.Join(ss,""))
} #include<bits/stdc++.h>
using namespace std;
int main()
{
string s,t;
cin>>s>>t;
sort(t.begin(), t.end());
for(int i=0;i<s.length();i++)
if(s[i]<t.back()) {s[i]=t.back();t.pop_back();}
cout<<s;
} import java.util.*;
public class Main{
public static void main(String[] args)
{
Scanner sc= new Scanner(System.in);
String s = sc.nextLine();
char[] t = sc.nextLine().toCharArray();
Arrays.sort(t);
int i ,j = t.length-1; //双指针 一头一尾比较
StringBuilder sb =new StringBuilder();
for(i = 0;i<s.length();i++)
{
char c = s.charAt(i);
if(j >=0&&c<t[j])
{
sb.append(t[j]);
j--;
}
else
sb.append(c);
}
System.out.println(sb.toString());
}
} import java.util.*;
public class Main{
public static void main(String args[]){
Scanner in = new Scanner(System.in);
while(in.hasNextLine()){
StringBuffer s = new StringBuffer(in.nextLine()); // 替换字母直接在s上操作
char c[] = in.nextLine().toCharArray(); // 存储字符卡片
Arrays.sort(c); // 对卡片大小排序
for(int i=c.length-1;i>=0;i--) { // 从最大的卡片进行遍历
for(int j=0;j<s.length();j++) { // 从字符串的第一个字母开始比较,才有可能替换到最大的结果
if(c[i] > s.charAt(j)) { // 字符卡片比字符串上的某一字符大
s.setCharAt(j, c[i]); // 直接替换
break; // 并且这个卡片不能再使用
}
}
}
System.out.println(s);
}
}
} #include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
string s1, s2;
while (cin >> s1 >> s2)
{
sort(s2.begin(), s2.end());
reverse(s2.begin(), s2.end());
for (int i = 0; i < s2.size(); i++)
{
for (int j = 0; j < s1.size(); j++)
{
if (s2[i] > s1[j])
{
s1[j] = s2[i];
break;
}
}
}
cout << s1 << endl;
}
return 0;
} #include <bits/stdc++.h>
using namespace std;
int main()
{
string s, s1;
cin >> s;
cin >> s1;
sort(s1.rbegin(), s1.rend());
int index = 0;
for (int i = 0; i < s.size(); i++)
{
int j = 0;
while (j < s1.size())
{
if (s[i] < s1[j])
{
s[i] = s1[j];
s1[j++] = 'a';
index++;
break;
}
else j++;
}
if (index == s1.size())break;
}
cout << s;
}
import sys
def main():
lines = sys.stdin.readlines()
lines = [line.strip() for line in lines if line.strip()]
originList = list(lines[0])
haveStr = lines[-1]
haveStr = sorted(haveStr,reverse=True)
index = 0
for num in haveStr:
for i in range(index,len(originList)):
if originList[i]>=num:
continue
else:
index = i
originList[i] = num
break
print(''.join(originList))
if __name__ == '__main__':
main() var str=readline().split('');
var arr=readline().split('');
for(var i=0;i<arr.length-1;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i]<arr[j]){
var tem=arr[i];
arr[i]=arr[j];
arr[j]=tem
}
}
}
var len=arr.length;
var p=0;
// k表示第二字符串的索引
for(var k=0;k<len;k++){ //0 1
for(var m=k;m<str.length;m++){
// 更换
if(arr[k]>str[m]){
str[m]=arr[k];
break;
}
}
}
console.log(str.join(''))