华为OD机考-货币单位换算-字符串(JAVA 2025B卷)



纯暴力解法

java 复制代码
import java.util.*;
public class ExchangeMoney {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNextLine()){
            int count = Integer.parseInt(scanner.nextLine());
            List<String> strings = new ArrayList<>(count);
            for(int i=0;i<count;i++){
                strings.add(scanner.nextLine());
            }
            solve(strings);
        }
    }

    private static void solve(List<String> strings) {
        Integer sum =0;
        for (String s:strings){
            boolean fen = s.contains("fen");
            boolean cny = s.contains("CNY");
            boolean hkd = s.contains("HKD");
            boolean cents = s.contains("cents");
            boolean jpy = s.contains("JPY");
            boolean sen = s.contains("sen");
            boolean eur = s.contains("EUR");
            boolean eurocents = s.contains("eurocents");
            boolean gbp = s.contains("GBP");
            boolean pence = s.contains("pence");
            // CNY
            if(cny&&fen){//20CNY53fen
                String fen1 = s.split("fen")[0];
                String[] cnies = fen1.split("CNY");
                Double yuan = Double.parseDouble(cnies[0]);
                Double fentemp = Double.parseDouble(fen1.substring(cnies[0].length()+3));
                sum+= (int)  (yuan*100+fentemp);
            }else if(cny){
                sum+= (int) Double.parseDouble(s.substring(0,s.length()-3))*100;
            }else if(fen){
                sum+=(int)  Double.parseDouble(s.substring(0,s.length()-3));
            }
            // HKD
            if(hkd&&cents){//20HKD53cents
                String fen1 = s.split("cents")[0];
                String[] cnies = fen1.split("HKD");
                Double yuan = Double.parseDouble(cnies[0]);
                Double fentemp = Double.parseDouble(fen1.substring(cnies[0].length()+3));

                sum+= (int) (yuan/123 *100 *100+ fentemp/12300 *100 *100);
            }else if(hkd){
                sum+= (int) (Double.parseDouble(s.substring(0,s.length()-3))/123*100*100);
            }else if(cents){
                sum+= (int) (Double.parseDouble(s.substring(0,s.length()-3))/12300 *100 *100);
            }
            // JPY
            if(jpy&&sen){//20JPY53sen
                String fen1 = s.split("sen")[0];
                String[] cnies = fen1.split("JPY");
                Double yuan = Double.parseDouble(cnies[0]);
                Double fentemp = Double.parseDouble(fen1.substring(cnies[0].length()+3));
                sum+= (int) (yuan/1825 *100 *100+fentemp/182500 * 100 *100);
            }else if(jpy){
                sum+= (int) (Double.parseDouble(s.substring(0,s.length()-3))/1825*100*100);

            }else if(sen){
                sum+= (int) (Double.parseDouble(s.substring(0,s.length()-3))/182500 *100 *100);

            }
            // EUR
            if(eur&&eurocents){//20EUR53eurocents
                String fen1 = s.split("eurocents")[0];
                String[] cnies = fen1.split("EUR");
                Double yuan = Double.parseDouble(cnies[0]);
                Double fentemp = Double.parseDouble(fen1.substring(cnies[0].length()+3));
                sum+= (int) (yuan/14*100*100+fentemp/1400 *100 *100);

            }else if(eur){
                sum+= (int) (Double.parseDouble(s.substring(0,s.length()-3))/14*100*100);

            }else if(eurocents){
                sum+= (int) (Double.parseDouble(s.substring(0,s.length()-3))/1400*100*100);

            }
            // GBP
            if(gbp&&pence){//20GBP53pence
                String fen1 = s.split("pence")[0];
                String[] cnies = fen1.split("GBP");
                Double yuan = Double.parseDouble(cnies[0]);
                Double fentemp = Double.parseDouble(fen1.substring(cnies[0].length()+3));
                sum+= (int) (yuan/12*100*100+fentemp/1200*100*100);

            }else if(gbp){
                sum+= (int) (Double.parseDouble(s.substring(0,s.length()-3))/12*100*100);

            }else if(pence){
                sum+= (int) (Double.parseDouble(s.substring(0,s.length()-3))/1200*100*100);

            }
        }
        System.out.println(sum);
    }
}
相关推荐
SimonKing4 小时前
OpenCode AI辅助编程,不一样的编程思路,不写一行代码
java·后端·程序员
FastBean4 小时前
Jackson View Extension Spring Boot Starter
java·后端
Seven975 小时前
剑指offer-79、最⻓不含重复字符的⼦字符串
java
皮皮林55114 小时前
Java性能调优黑科技!1行代码实现毫秒级耗时追踪,效率飙升300%!
java
冰_河15 小时前
QPS从300到3100:我靠一行代码让接口性能暴涨10倍,系统性能原地起飞!!
java·后端·性能优化
桦说编程18 小时前
从 ForkJoinPool 的 Compensate 看并发框架的线程补偿思想
java·后端·源码阅读
躺平大鹅19 小时前
Java面向对象入门(类与对象,新手秒懂)
java
初次攀爬者20 小时前
RocketMQ在Spring Boot上的基础使用
java·spring boot·rocketmq
花花无缺20 小时前
搞懂@Autowired 与@Resuorce
java·spring boot·后端