字符覆盖

字符覆盖

http://www.nowcoder.com/practice/d7ae059c1cee491989412c4fa39d4384

import java.util.Arrays;
import java.util.Scanner;
class CoverRes {
private String s;
private int pos;

public CoverRes() {
}

public CoverRes(String s, int pos) {
    this.s = s;
    this.pos = pos;
}

public String getS() {
    return s;
}

public void setS(String s) {
    this.s = s;
}

public int getPos() {
    return pos;
}

public void setPos(int pos) {
    this.pos = pos;
}

}

/**

  • 字符覆盖

  • @Author zhuyq

  • @Date 2021-09-16

  • /
    public class Main {

    public static void main(String[] args) {

      Scanner in = new Scanner(System.in);
      String s = in.nextLine();
      String t = in.nextLine();
      System.out.println(g(s, t));

    }

//字符串t覆盖字符串s得到最大字典序
public static String g(String s, String t){
    char[] chars = t.toCharArray();
    Arrays.sort(chars);
    int count = 0;
    String t1 = "";
    for(int i=chars.length-1; i>-1; i--){
        t1+=chars[i];
        count++;
    }
    t = t1;

    for(int j=0; j<t.length(); j++){
        char c = t.charAt(j);
        CoverRes coverRes= f(s, c);
        if(coverRes.getPos()==s.length()){
            return coverRes.getS();
        }
        else{
            s = coverRes.getS();
        }
    }
    return s;
}


//字符串t中的一个字符覆盖字符串得到最大字典序
public static CoverRes f(String s, char c){
    int pos = 0;
    boolean isAvailable = false;
    for(int i=0; i<s.length(); i++){
        int ascii = (int)s.charAt(i);
        if(ascii<(int)c){
            isAvailable=true;
            s = s.substring(0, i)+c+s.substring(i+1, s.length());
            pos = i;
            break;
        }
    }
    if(!isAvailable){
        pos = s.length();
    }
    return new CoverRes(s, pos);
}

}

全部评论

相关推荐

10-28 14:42
门头沟学院 Java
watermelon1124:因为嵌入式炸了
点赞 评论 收藏
分享
11-14 16:13
已编辑
重庆科技大学 测试工程师
Amazarashi66:不进帖子我都知道🐮❤️网什么含金量
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务