常见编程题 - 字典序

一、对于字符串x和y, 如果擦除x中的某些字母(有可能全擦掉或者都不擦)能够得到y,我们就称y是x的子序列。例如.”ncd”是”nowcoder”的子序列,而”xt”不是。
现在对于给定的一个字符串s,请计算出字典序最大的s的子序列。
输入描述:
输入包括一行,一个字符串s,字符串s长度length(1 ≤ length ≤ 50).
s中每个字符都是小写字母

输出描述:
输出一个字符串,即字典序最大的s的子序列。
示例1
输入
test
输出
tt

var str = readline();
var len = str.length;
var max = str[len-1];
var result = str[len-1];
for(var i=len-2;i >= 0;i--) {
    if(str[i] >= max) {
        result = str[i] + result;
        max = str[i];
    }
}
print(result);

二、小度有一个小写字母组成的字符串s.字符串s已经被写在墙上了.
小度还有很多卡片,每个卡片上有一个小写字母,组成一个字符串t。小度可以选择字符串t中任意一个字符,然后覆盖在字符串s的一个字符之上。小度想知道在选取一些卡片覆盖s的一些字符之后,可以得到的字典序最大的字符串是什么。

输入描述:
输入包括两行,第一行一个字符串s,字符串s长度length(1 ≤ length ≤ 50),s中每个字符都是小写字母
第二行一个字符串t,字符串t长度length(1 ≤ length ≤ 50),t中每个字符都是小写字母

输出描述:
输出一个字符串,即可以得到的字典序最大字符串
示例1
输入
fedcba
ee
输出
feeeba

var s = readline();
var t = readline();
s = s.split('');
t = t.split('').sort().reverse();
for(var i = 0;i < t.length;i++){
    for(var j = 0;j < s.length ; j++) {
        if(s[j] < t[i]) {
            s[j] = t[i];
            break;
        }
    }
}
print(s.join(''));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值