2023年1月28日每日一练-豚鼠排名榜(字符串、比较运算)

每日一练-豚鼠排名榜

已知字符A.B,C。每个字符都有自己的权值q。 现不知道权值q,只知道A,B,C的三次比较结果。

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
class Main {
   public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str_0 = scan.nextLine().trim();
        String exp1 = str_0;
        String str_1 = scan.nextLine().trim();
        String exp2 = str_1;
        String str_2 = scan.nextLine().trim();
        String exp3 = str_2;
        scan.close();
        String result = solution(exp1, exp2, exp3);
        System.out.println(result);
    }
    public static String solution(String exp1, String exp2, String exp3){
        String result = "";
        String exp11 = getString(exp1);
        String exp22 = getString(exp2);
        String exp33 = getString(exp3);
        String expall = StringFilter(exp11+exp22+exp33);
        Map<Integer,String> maps = new HashMap<Integer, String>();
        int a=0;
        for(int i=0;i<3;i++){
            if(expall.charAt(i) == exp11.charAt(0)){
                a=a+1;
            }
            if(expall.charAt(i) == exp22.charAt(0)){
                a=a+1;
            }
            if(expall.charAt(i) == exp33.charAt(0)){
                a=a+1;
            }
            maps.put(a, String.valueOf(expall.charAt(i)));
            a=0;
        }
        try {
            String n = maps.get(2);
            if(n.equals(null)){
                System.out.print(n);
            }
        } catch (Exception e) {
            return "Impossible";
        }
        result = maps.get(2)+maps.get(1)+maps.get(0);
       return result;
    }
    public static String getString(String a){
        String exp11;
        if(a.indexOf("<")>=0){
            String[] exp1Str = a.split("<");
            String exp1_1 = exp1Str[0];
            String exp1_2 = exp1Str[1];
            exp11 = exp1_1+exp1_2;
        }else{
            String[] exp1Str = a.split(">");
            String exp1_1 = exp1Str[0];
            String exp1_2 = exp1Str[1];
            exp11 = exp1_2+exp1_1;
        }
        return exp11;
    }
    public static String StringFilter(String s){
        StringBuilder sbd = new StringBuilder();//创建一个空的StringBuilder
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (s.indexOf(c) == s.lastIndexOf(c)) {//第一次出现的下标跟最后一次相等,表示当前字符没有出现重复,直接添加进StringBuilder中
                sbd.append(c);
            } else {//出现重复
                if (s.indexOf(c) == i) {//如果重复出现的字符的位置等于当先字符的索引值,即表示当前字符为重复字符出现的第一次,将其加入StringBuilder中
                    sbd.append(c);
                }
            }
        }
        return sbd.toString();
    }
}

你可能感兴趣的:(java,算法,c++)