小度有一个小写字母组成的字符串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(''))