刷题笔记之二(字符串中找出连续最长的数字串+数组中出现次数超过一半的数字+另类加法+计算糖果+进制转换)

news2024/11/16 23:35:56

目录

1. 多层继承问题

2. 继承中子类的构造要引用super

3. == 比较地址

4. 字符串中找出连续最长的数字串(编程题)

5. 数组中出现次数超过一半的数字(编程题)

6. 另类加法(编程题)

7. Interface 接口中定义方法

8. 实现或继承Collection接口的类

9. 类实现的接口修饰符不能是final

10. 计算糖果(编程题)

11. 进制转换(编程题)

12. 数组复制效率最高:System.arraycopy


1. 多层继承问题

子类继承父类,然后再多往下被继承一次,对这三个实例化,没问题 

因为java继承中是支持多层继承的(注意不支持多重继承)

 

2. 继承中子类的构造要引用super

写子类构造方法,必须要用super

具体还不明白的铁子,可以看我这篇博客,里面对于继承有很好的分析

http://t.csdn.cn/bqINn   

我之前对于子类构造是这样总结的

子类对象成员是由两部分组成:

 🟧子类对象构造时,需要先调用父类构造方法,将从父类继承下来的成员构造完整,

      然后再调用子类自己的构造方法,将子类自己新增加的成员初始化完整。

⚜️提几点注意:

🤠(1)如果父类执行默认的构造方法,那么在子类构造方法的第一行默认含有super()的调用

🤠(2)如果父类构造方法是带有参数的,此时编译器给子类不会执行默认的构造方法,

这就要程序员自己给子类定义构造方法了

🤠(3)在子类构造方法中,super()调用父类构造时,必须是子类构造方法中第一条语句。

🤠(4)super()只能在子类构造方法中出现一次,并且不能和this同时出现

3. == 比较地址

 ==比较的是地址 , str1 是放在常量池中的,而str2  这里有new所以是放堆中的,两个指向的不是一个对象

== 比较的是地址!!!   不要看内容一样就选true!!!
 

4. 字符串中找出连续最长的数字串(编程题)

题目链接:字符串中找出连续最长的数字串_牛客题霸_牛客网 (nowcoder.com)

题目要求:

题目分析:

上代码

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();

        String cur = "";
        String ret = "";

        for(int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            if(ch >='0' && ch <= '9') {
                cur += ch;
            }else {
                if(cur.length() > ret.length()) {
                    ret = cur;
                }
                cur = "";
            }
        }
        //走到这里还需要比较一次,因为
        //如果i走到最后面有一个最长的数字字符串,这只会存到cur中
        if(cur.length() > ret.length()) {
            ret = cur;
        }
        System.out.println(ret);
    }
}

5. 数组中出现次数超过一半的数字(编程题)

题目链接:数组中出现次数超过一半的数字_牛客题霸_牛客网 (nowcoder.com)

题目要求:

题目分析:

两个思路

(1)排序

a)先排序,找到中间的数字X

b)再次遍历这个数组,看一下这个X出现了多少次

如果存在,那么遍历的结果,这个数字肯定会出现次数超过一半

(2)两个数字相抵消

如果两个数字不相等,就消去这两个数,最坏情况下

每次消去一个众数和一个非众数,那么如果存在众数,最后留下的数肯定是众数

在最后剩下的这个数,还需要再遍历一下,看这个数出现的次数超过一半了没

如果超过了一半,那就存在,如果没超过一半。就不存在 

上代码

(1)排序

import java.util.Arrays;

public class Solution {
    public int MoreThanHalfNum_Solution(int [] array) {
        if(array == null || array.length == 0) {
            return 0;
        }

        Arrays.sort(array);
        int len = array.length;
        int count = 0;
        for(int i = 0; i < len; i++) {
            if(array[len/2] == array[i]) {
                count++;
            }
        }
        if(count > len/2) {
            return array[len/2];
        }
        return 0;
    }
}

(2)两个数字相抵消

import java.util.Arrays;

public class Solution {
    public int MoreThanHalfNum_Solution1(int [] array) {
        if(array == null || array.length == 0) {
            return 0;
        }

        Arrays.sort(array);
        int len = array.length;
        int count = 0;
        for(int i = 0; i < len; i++) {
            if(array[len/2] == array[i]) {
                count++;
            }
        }
        if(count > len/2) {
            return array[len/2];
        }
        return 0;
    }

     public int MoreThanHalfNum_Solution(int [] array) {
         if(array == null || array.length == 0) {
             return 0;
         }

        int result = array[0];
        int times = 1;

        for(int i = 1; i < array.length; i++) {
            if(times != 0) {
                if(array[i] != result) {
                    times--;
                }else {
                    times++;
                }
            }else {
                result = array[i];
                times = 1;
            }
        }

        int count = 0;
        //再次判断剩下的这个数,有没有数组长度的一半
        for(int i = 0; i < array.length; i++) {
            if(array[i] == result) {
                count++;
            }
        }
        if(count > array.length/2) {
            return result;
        }
        return 0;
     }
}

6. 另类加法(编程题)

题目链接: 另类加法__牛客网 (nowcoder.com)

题目要求:

题目分析:

上代码

import java.util.*;

public class UnusualAdd {
    public int addAB(int A, int B) {
        if(B == 0) {
            return 0;
        }
        int sum = 0;//本位
        int carray = 0;//进位
        while(B != 0) {
            sum = A^B;
            carray = (A&B)<<1;
            A = sum;
            B = carray;
        }
        return A;
    }
}

7. Interface 接口中定义方法

 这个题选 A、C、D

这个先回顾一下,接口的特性

(1)接口当中的成员变量,默认都是 public static final 修饰的

(2)接口中的成员方法,默认都是抽象方法,也就是public abstract 修饰的

(3)接口中的普通成员方法,是不能有具体的实现的

(4)接口中的普通成员方法,如果要有具体实现,就必须加上default【从JDK8开始】

(5)接口中可以有静态的成员方法,但是不管是静态方法还是default方法都是public修饰

(6)接口本身也是不可以进行实例化的

(7) 类和接口的关系是使用 implements 来关联的

(8)接口中不能有静态代码块,实例代码块,构造方法

(9)一个抽象类实现一个接口,可以不重写这个抽象方法,但是这个类一旦被使用,就也要重写构造方法

针对这个题来说,

 所以,选ACD,我当时做的时候选了个C、D,没选A是因为看见了main方法,以为接口中是不能有main方法的,现在看来这个main方法没有实现啊!!!

8. 实现或继承Collection接口的类

 这道题选B、C

9. 类实现的接口修饰符不能是final

 接口不能被final修饰,接口的作用就是被实现重写的

而final的作用就是

(1)final修饰类:表示该类不能被继承(修饰的类也叫做“断子绝孙类”)

(2)final修饰方法:表示方法不能被重写(但可以被继承)

(3)final修饰变量:表示变量只能一次赋值以后,值不能被修改(常量)

  a. 当final修饰的是基本数据类型:这个数据的值在初始化后将不能被改变

  b. 当final修饰的是引用数据类型:修饰一个对象时,引用在初始化后将永远指向一个内存地址,不能被修改。但是该内存地址中保存的对象信息,是可以进行修改的

也就是基本数据类型,值不能改;引用数据类型,地址不能改,内容可以改

10. 计算糖果(编程题)

题目链接:计算糖果_牛客题霸_牛客网 (nowcoder.com)

题目要求:

题目分析:

上代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int[] array = new int[4];
        for(int i = 0; i < 4; i++) {
            array[i] = in.nextInt();
        }
        int A,B,C,D;
        A = (array[0] + array[2])/2;
        B = (array[1] + array[3])/2;
        C = (array[3] - array[1])/2;

        if((array[0] == A - B) && (array[1] == B - C) && (array[2] == A + B) && (array[3] == B + C)) {
            System.out.println(A + " " + B +" " + C);
        }else {
            System.out.println("No");
        }
    }
}

11. 进制转换(编程题)

题目链接:进制转换_牛客题霸_牛客网 (nowcoder.com)

题目要求:

题目分析:

上代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int m = in.nextInt();
        int n = in.nextInt();

        StringBuilder sb = new StringBuilder();
        String table = "0123456789ABCDEF";
        boolean flag = true;
        if(m == 0) {
            System.out.println("0");
        }
        if(m < 0) {
            m = -m;
            flag = false;
        }
        while(m != 0) {
            sb.append(table.charAt(m%n));
            m /= n;
        }

        if(!flag) {
            sb.append("-");
        }

        System.out.println(sb.reverse().toString());
    }
}

12. 数组复制效率最高:System.arraycopy

 效率:System.arraycopy > clone > Array.copyOf > for

(1)System.arraycopy:这个方法是一个本地方法,也就是native方法,对应的实现不在当前文件里,而是在其他语言实现的的文件的,比如C、C++中。也就是native方法+JVM手写函数,在JVM里预写好速度最快

 (2)Array.copyOf:注意这里是错误的,应该是Arrays.copyOf。

首先明确Array中没有copyOf,而Arrays中有copyOf

再看一个Arrays的copyOf源码,里面调用了System.arraycopy

相当于多了一层,那肯定是不如System.arraycopy快

 (3)clone

native方法,但并未手写,需要JNI转换,速度次与System.copyOf

(4)for全是深复制,并且不是封装方法,所以最慢

 这块可以看一下这篇博客写的挺好的

http://t.csdn.cn/wXYrm

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1415.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言学习(二)之字符串和格式化输入/输出

文章目录一、字符串二、 输入2.1 scanf()作用2.2 两种用法三、输出3.1 printf()3.1.1 printf 四种用法3.1.2 常用输出控制符3.1.3 为什么需要输出控制符一、字符串 字符串是一个或多个字符的序列。如&#xff1a;“Hello World” 双引号不是字符串的一部分。仅告知编译器它括…

【学习笔记】《深入浅出Pandas》第16章:可视化

文章目录16.1 plot方法16.1.1 plot概述16.1.2 plot基础方法16.1.3 图形类型16.1.4 x轴和y轴16.1.5 图形标题16.1.6 字体大小16.1.7 线条样式16.1.8 背景辅助线16.1.9 图例16.1.10 图形大小16.1.11 色系16.1.12 绘图引擎16.1.14 图形叠加16.1.15 颜色的表示16.1.16 解决图形中的…

量子笔记:量子计算 toy python implementation from scratch

目录 0. 概要 1. 量子比特表示&#xff1a;用二维张量表示 2. 张量积的实现 2.1 用scipy.linalg.kron()实现张量积 2.2 用张量积计算双量子系统的基 3. 多量子系统基向量表示和生成 3.1 Helper function: bin_ext 3.2 多量子系统的基的生成 3.3 numpy.matrix numpy.m…

基于多尺度注意力网络单图像超分(MAN)

引言 Transformer的自注意力机制可以进行远距离建模&#xff0c;在视觉的各个领域表现出强大的能力。然而在VAN中使用大核分解同样可以得到很好的效果。这也反映了卷积核的发展趋势&#xff0c;从一开始的大卷积核到vgg中采用堆叠的小卷积核代替大卷积核。 上图展现了MAN网络在…

使用T0,方式2,在P1.0输出周期为400µs,占空比为4:1的矩形脉冲,要求在P1.0引脚接有虚拟示波器,观察P1.0引脚输出的矩形脉冲波形

大家学过一段时间的单片机了&#xff0c;今天我们来说说单片机里的定时器&#xff0c;又叫计数器。首先&#xff0c;我们通过案例来了解一下什么是定时器。 【例】使用T0&#xff0c;方式2&#xff0c;在P1.0输出周期为400s&#xff0c;占空比为4&#xff1a;1的矩形脉冲&…

如何编写优秀的测试用例,建议收藏和转发

1、测试点与测试用例 测试点不等于测试用例&#xff0c;这是我们首先需要认识到的。 问题1&#xff1a;这些测试点在内容上有重复&#xff0c;存在冗余。 问题2&#xff1a;一些测试点的测试输入不明确&#xff0c;不知道测试时要测试哪些。 问题3&#xff1a;总是在搭相似…

串口通信协议【I2C、SPI、UART、RS232、RS485、CAN】

&#xff08;1&#xff09;I2C 集成电路互连总线接口(Inter IC)&#xff1a;同步串行半双工传输总线&#xff0c;连接嵌入式处理器及其外围器件。 支持器件&#xff1a;LCD驱动器、Flash存储器 特点&#xff1a; ①有两根传输线&#xff08;时钟线SCL、双向数据线SDA&#…

python基础19-36题

题目&#xff1a; 代码十九二十二十一二十二二十三二十四二十五二十六二十七二十八二十九三十三十一三十二三十三三十四三十五三十六十九 birthday int(input(“请输入生日日期&#xff1a;”)) Set1 [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31] Set2 [2,3,6,7,10,11,…

【CV】第 7 章:目标检测基础

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

几何等变图神经网络综述

许多科学问题都要求以几何图形&#xff08;geometric graphs&#xff09;的形式处理数据。与一般图数据不同&#xff0c;几何图显示平移、旋转和反射的对称性。研究人员利用这种对称性的归纳偏差&#xff08;inductive bias&#xff09;&#xff0c;开发了几何等变图神经网络&a…

SpringMVC | 快速上手SpringMVC

&#x1f451; 博主简介&#xff1a;    &#x1f947; Java领域新星创作者    &#x1f947; 阿里云开发者社区专家博主、星级博主、技术博主 &#x1f91d; 交流社区&#xff1a;BoBooY&#xff08;优质编程学习笔记社区&#xff09; 前言&#xff1a;在上一节中我们了解…

多分类评估指标计算

文章目录混淆矩阵回顾Precision、Recall、F1回顾多分类混淆矩阵宏平均&#xff08;Macro-average&#xff09;微平均&#xff08;Micro-average&#xff09;加权平均&#xff08;Weighted-average&#xff09;总结代码混淆矩阵回顾 若一个实例是正类&#xff0c;并且被预测为正…

Linux(Nginx)

目录 一、Nginx简介 二、Nginx使用 Nginx安装 tomcat负载均衡 Nginx配置 三、Nginx部署项目 项目打包前 将前端项目打包&#xff08;测试本地项目打包后没问题&#xff09; ip/host主机映射 完成Nginx动静分离的default.conf的相关配置 将前台项目打包(配合Nginx动静…

real-word super resulution: real-sr, real-vsr, realbasicvsr 三篇超分和视频超分论文

real-world image and video super-resolution 文章目录real-world image and video super-resolution1. Toward Real-World Single Image Super-Resolution:A New Benchmark and A New Model&#xff08;2019&#xff09;1.1 real-world数据集制作1.2 LP-KPN网络结构1.3 拉普拉…

近八成中国程序员起薪过万人民币,你过了么?

打工者联盟为了抵抗996、拖欠工资、黑心老板、恶心公司&#xff0c;让我们组成打工者联盟。客观评价自己任职过的公司情况&#xff0c;为其他求职者竖起一座引路的明灯。https://book.employleague.cn/一项调查显示&#xff0c;近八成中国程序员本科毕业生起薪过万&#xff08;…

Oracle数据库中的数据完整性

目录 1.数据完整性约束作用 2.数据完整性约束的分类 3.完整性约束的状态 4.域完整性的实现 &#xff08;1&#xff09;check约束 ①可视化方式创建check约束 ②命令方式创建约束 ③修改表创建的约束 ④删除约束 &#xff08;2&#xff09;实体完整性约束实现 ①prim…

思科dhcp服务器动态获取ip地址

项目要求: 某公司共有网管中心、行政部、技术部、三个部门&#xff0c;分别处在一栋大楼中的两个楼层&#xff0c;为了保证公司内部主机始终能够连接Internet&#xff0c;采用双向冗余设计&#xff0c;分别使用路由器R1与路由器R2连接中国电信和中国联通。 1.首先为了避免不必要…

【算法详解】数据结构:7种哈希散列算法,你知道几个?

一、前言 哈希表的历史 哈希散列的想法在不同的地方独立出现。1953 年 1 月&#xff0c;汉斯彼得卢恩 ( Hans Peter Luhn ) 编写了一份IBM内部备忘录&#xff0c;其中使用了散列和链接。开放寻址后来由 AD Linh 在 Luhn 的论文上提出。大约在同一时间&#xff0c;IBM Researc…

项目进度管理

第3 章 项目进度管理 3.1 概述 1.项目进度管理是指在项目实施过程中&#xff0c;对各阶段的进展程度和项目最终完成的期限所进行的管理&#xff0c;是在 规定的时间内&#xff0c;拟定出合理且经济的进度计划&#xff08;包括多级管理的子汁划)&#xff0c;在执行该计划的过程…

常见的限流算法的原理以及优缺点

原文网址&#xff1a;常见的限流算法的原理以及优缺点_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍限流常用的算法及其优缺点。 常用的限流算法有&#xff1a; 计数器&#xff08;固定窗口&#xff09;算法滑动窗口算法漏桶算法令牌桶算法 下面将对这几种算法进行分别介绍…