Day02 错题

1.在基本Java类型中,如果不明确指定,整数型的默认是【int double】类型

2.方法通常存储在进程中的【方法区】中

3.不考虑反射,关于私有访问限制符private 修饰的成员变量,以下说法正确的是【只能被该类自身所访问和修改】

public > protected > default > private

4.Math.round(11.5)等于【12】,Math.round(11.5)等于【-11】

解析:java.lang.Math.round函数的作用是返回参数中最接近的值,其中参数四舍五入为正无穷大,所以-11.5四舍五入为-11

Math.ceil方法的功能是向上取整,Math.ceil(11.5)等于【12】 Math.ceil(-11.5)等于【-11】

Math.ceil为向下取整,返回值类型为double
也就是说若参数为正数则把小数"入"(不考虑四舍五入直接入),若参数为负数则把小数去掉

Math.floor方法的功能是向下取整,ceil意思为天花板,floor意思为地板,Math.floor(11.9)等于【11.0】,Math.floor(-11.4)等于【-12.0】

Math.floor方法的功能是向下取整,ceil意思为天花板,floor意思为地板

5.编程题

1. 标题:统计回文 .回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有 对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符 串B插入字符串A使产生的字符串是一个回文串。你接受花花的请求,帮助她寻找有多少种插入办法可以使新串是一个回文串。如果字符串B插入的位置不同就考虑为不一样的办法。

例如:

A = “aba”,B = “b”。这里有4种把B插入A的办法:

  • 在A的第一个字母之前: “baba” 不是回文

  • 在第一个字母‘a’之后: “abba” 是回文

  • 在字母‘b’之后: “abba” 是回文

  • 在第二个字母’a’之后 “abab” 不是回文

所以满足条件的答案为2
输入描述:
每组输入数据共两行。
第一行为字符串A
第二行为字符串B
字符串长度均小于100且只包含小写字母
输出描述: 输出一个数字,表示把字符串B插入字符串A之后构成一个回文串的方法数

示例1:

输入

aba b

输出

2

public class TestDay01_2 {
    //是否为回文
    public static boolean isHuiwen(String s){
        int i = 0;
        int j = s.length()-1;
        while(i < j){
            if(s.charAt(i) != s.charAt(j)){
                return false;
            }
            i++;
            j--;
        }
        return true;
    }

    public static void main(String[] args) {
        System.out.println("请输入两个字符串");
        Scanner scanner = new Scanner(System.in);
        String A = scanner.nextLine();
        String B = scanner.nextLine();
        int count = 0;//可以插入的方法数
        for(int i = 0;i <= A.length();i++){
            StringBuilder sb = new StringBuilder(A);
            sb.insert(i,B);//把B插入到sb中,位置为i
            if(isHuiwen(sb.toString())){
                count++;//判断回文如果是回文count+1
            }
        }
        System.out.println("可以插入的方式有"+count+"种");
    }
}
  1. 编程题2:有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。
    给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。
public int findKth(int[] a, int low, int high, int k) {
    int part = partation(a, low, high);
    if(k == part - low + 1) return a[part];//如果是第一大,直接return
    
    //如果k在右半边,low = part + 1,k = k - (part - low + 1). 
    else if(k > part - low + 1) return findKth(a, part + 1, high, k - part + low -1);
    //如果k在左半边,high = part - 1.
    else return findKth(a, low, part -1, k);
}
//快排
public int partation(int[] a,int low,int high){
    int key = a[low];
    while(low < high){
        while(low < high  && a[high] <= key){
            a[low] = a[high];
            high--;
        }
        while(low < high && a[low] >= key){
            a[high] = a[low];
            low++;
        }
    }
    a[low] = key;
    return key;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值