错题整理4

牛牛正在寄快递,他了解到快递在 1kg 以内的按起步价 20 元计算,超出部分按每 kg 1元计算,不足 1kg 部分按 1kg计算。如果加急的话要额外付五元,请问牛牛总共要支付多少快递费。

输入描述:

第一行输入一个单精度浮点数 a 和一个字符 b ,a 表示牛牛要寄的快递的重量,b表示牛牛是否选择加急,'y' 表示加急 ,'n' 表示不加急。

输出描述:

输出牛牛总共要支付的快递费用

 public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        double price = in.nextFloat();
        String s = in.nextLine();
        char cha = s.charAt(1);
 
        double diff = Math.ceil(price - 1); //Math.ceil 向上取整  Math.floor 向下取整
 
        if (price <= 1){
            if (cha == 'n'){
                price = 20;
            } else if (cha == 'y') {
                price = 25;
            }
        } else if (price > 1) {
            if (cha == 'n'){
                price = 20 + diff;
            } else if (cha == 'y') {
                price = 25 + diff;
            }
        }
        System.out.printf("%.0f",price);
    }

牛牛的快递_牛客题霸_牛客网

补充

Math基本使用_math函数怎么用-CSDN博客


数组中两个字符串的最小距离

package live.every.day.ProgrammingDesign.CodingInterviewGuide.String;
 
/**
 * 数组中两个字符串的最小距离
 *
 * 【题目】
 * 给定一个字符串数组strs,再给定两个字符串str1和str2,返回在strs中str1与str2的最小距离,如果str1或str2为null,或
 * 不在strs中,返回-1。
 *
 * 【进阶题目】
 * 如果查询发生的次数有很多,如何把每次查询的时间复杂度降为O(1)?
 *
 * 【难度】
 * 中等
 *
 * 【解答】
 * 原问题。
 * 从左到右遍历strs,用变量last1记录最近一次出现的str1的位置,用变量last2记录最近一次出现的str2的位置。如果遍历到
 * str1,那么i-last2的值就是当前的str1和左边离它最近的st2之间的距离。如果遍历到str2,那么i-last1的值就是当前的str2
 * 和左边离它最近的str1之间的距离。用变量min记录这些距离的最小值即可。
 * 请参看如下的minDistance方法。
 *
 * @author Created by LiveEveryDay
 */
 
public class TwoStringsMinDistanceInArray1 {
 
    public static int minDistance1(String[] strs, String str1, String str2) {
        if (str1 == null || str2 == null) {
            return -1;
        }
        if (str1.equals(str2)) {
            return 0;
        }
        int last1 = -1;
        int last2 = -1;
        int min = Integer.MAX_VALUE;
        for (int i = 0; i != strs.length; i++) {
//排除初值
            if (strs[i].equals(str1)) {
                min = Math.min(min, last2 == -1 ? min : i - last2);
                last1 = i;
            }
            if (strs[i].equals(str2)) {
                min = Math.min(min, last1 == -1 ? min : i - last1);
                last2 = i;
            }
        }
        return min == Integer.MAX_VALUE ? -1 : min;
    }
 
    public static void main(String[] args) {
        String[] strs = {"1", "3", "3", "3", "2", "3", "1"};
        String str1 = "1";
        String str2 = "2";
        System.out.printf("The min distance is: %d", minDistance1(strs, str1, str2));
    }
 
}
 
// ------ Output ------
/*
The min distance is: 2
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值