刷题日记【第二篇】

导读:本篇文章讲解 刷题日记【第二篇】,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一、选择题模块

  1. 下面关于构造方法的说法不正确的是(B)——知识点:构造方法可以进行重载刷题日记【第二篇】
  2. 以下程序的输出结果为:(D
    class Base{        public Base(String s){            System.out.print("B");        }    }    public class Derived extends Base{        public Derived (String s) {            System.out.print("D");        }        public static void main(String[] args){            new Derived("C");        }    }

    刷题日记【第二篇】

     知识点:子类帮父类构造须调用super()关键字我自己是这样想的:

    【main 方法是个静态方法,而Derived类不是个静态内部类,所以不能直接初始化。】
  3. 在创建派生类对象,构造函数的执行顺序(A刷题日记【第二篇】

    此处的基类就是父类.【这就和上面的第二对应起来了,常见派生类对象时,先要构造父类的构造函数调用super()】 

  4. java语言的下面几种数组复制方法中,哪个效率最高?(B)
    A for 循环逐一复制
    B System.arraycopy
    C Array.copyOf
    D 使用clone方法

    此题选B,因为刷题日记【第二篇】

    所以排序如下: 

    System.arraycopy>clone>Arrays.copyOf>for 
    至于具体的原因: 
    1.主要认为System.arraycopy是在系统底层操作,本地方法; 
    2.克隆主要都不太了解 
    3.Arrays工具类被for快就对了,不然怎么当工具使
  5. 软件定义阶段,任务是确定软件开发工作必须完成的目标,确定工程的可行性;软件开发阶段,任务是具体完成设计和实现定义阶 段所定义的软件,通常包括总体设计、详细设计、编码和测试;软件维护阶段,任务是使软件在运行中持久地满足用户的需要。需求分析属于软件定义阶段的任务。

  6. 下面选项中,哪些是interface中合法方法定义?()
    A public void main(String [] args);
    B private int getSum();
    C boolean setFlag(Boolean [] test);
    D public float get(int x);

    此题为多选题,应该选 A  C  D. 接口内的方法不能用private修饰。

  7. 下面哪些类实现或继承了 Collection 接口?
    A HashMap
    B ArrayList
    C Vector
    D Iterator
    

  8. 刷题日记【第二篇】此题也为多选题,选 B C.具体为什么 请看下图:

     

刷题日记【第二篇】

二、编程题模块

1.字符串中找出连续最长的数字串

题目链接:    ​字符串中找出连续最长的数字串

描述

读入一个字符串str,输出字符串str中的连续最长的数字串

输入描述:

个测试输入包含1个测试用例,一个字符串str,长度不超过255。

输出描述:

在一行内输出str中里连续最长的数字串。

思路分析

刷题日记【第二篇】

具体代码

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str = scan.nextLine();
        String cur = "";
        String ret = "";
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            if (ch <= '9' && ch >= '0') {
                cur +=  ch + "";
            } else {
                if (cur.length() > ret.length()) {
                    ret = cur;
                }
                cur = "";
            }
        }
        if (i == str.length() && cur.length() > ret.length()) {
            ret = cur;
        }
        System.out.println(ret);
    }
}

2.数组中出现次数超过一半的数字

 题目链接 数组中出现次数超过一半的数字

描述

给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。

例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。

数据范围:n \le 50000n≤50000,数组中元素的值 0 \le val \le 100000≤val≤10000

要求:空间复杂度:O(1)O(1),时间复杂度 O(n)O(n)

输入描述:

保证数组输入非空,且保证有解

思路分析

刷题日记【第二篇】

具体代码

import java.util.Arrays;

public class Solution {
    public int MoreThanHalfNum_Solution(int [] array) {
//思路一
         Arrays.sort(array);
         int count = 0;
         int mid = array.length / 2;
         for (int i = 0; i < array.length; i++) {
             if (array[i] == array[mid]) {
                 count++;
             }
         }
         if (count > mid) {
             return array[mid];
         }
         return 0;
        
//思路二

        // res -- 候选者,初始化为数组第一个值,
        int res = array[0];
        // count -- 票数
        int count = 0;

        for (int i = 0; i < array.length; i++) {
            if (array[i] == res) {
                count++;
            } else {
                // 票数为0换人
                count--;
                if (count == 0) {
                    res = array[i];
                    count++;
                }
            }
        }
        return res;
    }
}

3.计算糖果

题目链接 计算糖果

描述

A,B,C三个人是好朋友,每个人手里都有一些糖果,我们不知道他们每个人手上具体有多少个糖果,但是我们知道以下的信息:
A – B, B – C, A + B, B + C. 这四个数值.每个字母代表每个人所拥有的糖果数.
现在需要通过这四个数值计算出每个人手里有多少个糖果,即A,B,C。这里保证最多只有一组整数A,B,C满足所有题设条件。

输入描述:

输入为一行,一共4个整数,分别为A – B,B – C,A + B,B + C,用空格隔开。 范围均在-30到30之间(闭区间)。

输出描述:

输出为一行,如果存在满足的整数A,B,C则按顺序输出A,B,C,用空格隔开,行末无空格。 如果不存在这样的整数A,B,C,则输出No

思路分析

刷题日记【第二篇】

具体代码

import java.util.Scanner;

public class Main {

    public static void main(String[] arg) {
        Scanner scan = new Scanner(System.in);
        while (scan.hasNext()) {
            int x = scan.nextInt();
            int y = scan.nextInt();
            int x1 = scan.nextInt();
            int y1 = scan.nextInt();
            int A = (x + x1) >> 1;
            int B = (y + y1) >> 1;
            int C = (y1 - B);
            if ((x == A - B) && (y == B- C) && (x1 == A + B) && (y1 == B + C)) {
                System.out.println(A + " " + B + " " + C);
            }else {
                System.out.println("No");
            }

        }
    }
}

4.进制转换

题目链接 进制转换

描述

给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数

输入描述:

输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。

输出描述:

为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)

思路分析

刷题日记【第二篇】

具体代码

代码一:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        
        while (in.hasNextInt()) { 
            int m = in.nextInt();
            int n = in.nextInt();
            StringBuilder s = new StringBuilder();
            String table = "0123456789ABCDEF"; 
            //用来存储2-16进制中所有的可能
            boolean flag = false; //标记下有没有加负号
            if(m < 0){
                m = -m;
                flag = true; 
                //本身是负数,我们改为正数了。标记下
            }
            if(m == 0){
                s.append('0');
            }
            while (m != 0) {
                s.append(table.charAt(m % n));
                m /= n;
            }
            if(flag){
                s.append('-');
            }
            s.reverse();
            System.out.println(s);
        }

    }
    
}

代码二(使用库函数,偷懒的办法)

import java.util.Scanner;
import java.math.BigInteger;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String m = in.next();
        int n = in.nextInt();
        BigInteger bi = new BigInteger(m, 10);
        System.out.println(bi.toString(n).toUpperCase());
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/119541.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!