Java每日一练(20230511) 有效数字、重复元素II、类和子类

news2024/11/27 14:34:08

目录

1. 有效数字  🌟🌟🌟

2. 存在重复元素 II  🌟🌟

3. 设计学生类Student和它的一个子类Undergraduate  🌟

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


1. 有效数字

有效数字(按顺序)可以分成以下几个部分:

  1. 一个 小数 或者 整数
  2. (可选)一个 'e' 或 'E' ,后面跟着一个 整数

小数(按顺序)可以分成以下几个部分:

  1. (可选)一个符号字符('+' 或 '-'
  2. 下述格式之一:
    1. 至少一位数字,后面跟着一个点 '.'
    2. 至少一位数字,后面跟着一个点 '.' ,后面再跟着至少一位数字
    3. 一个点 '.' ,后面跟着至少一位数字

整数(按顺序)可以分成以下几个部分:

  1. (可选)一个符号字符('+' 或 '-'
  2. 至少一位数字

部分有效数字列举如下:

  • ["2", "0089", "-0.1", "+3.14", "4.", "-.9", "2e10", "-90E3", "3e+7", "+6e-1", "53.5e93", "-123.456e789"]

部分无效数字列举如下:

  • ["abc", "1a", "1e", "e3", "99e2.5", "--6", "-+3", "95a54e53"]

给你一个字符串 s ,如果 s 是一个 有效数字 ,请返回 true 。

示例 1:

输入:s = "0"
输出:true

示例 2:

输入:s = "e"
输出:false

示例 3:

输入:s = "."
输出:false

示例 4:

输入:s = ".1"
输出:true

提示:

  • 1 <= s.length <= 20
  • s 仅含英文字母(大写和小写),数字(0-9),加号 '+' ,减号 '-' ,或者点 '.' 。

以下程序实现了这一功能,请你填补空白处内容:

```Java
class Solution {
    char[] chars;
    boolean point = false;
    boolean exponent = false;
    public boolean isNumber(String s) {
        s = s.trim();
        int length = s.length();
        if (length == 0) {
            return false;
        }
        chars = s.toCharArray();
        String[] ss = s.split("e");
        if (ss.length == 0) {
            return false;
        }
        if (ss[0].length() == 0)
            return false;
        if (ss[0].length() < length)
            exponent = true;
        if (ss[0].length() == length - 1) {
            return false;
        }
        String[] pre = ss[0].split("\\.");
        if (pre.length == 0) {
            return false;
        }
        if (pre[0].length() < ss[0].length())
            point = true;
        boolean result = pre(0, pre[0].length());
        result = result && middle(pre[0].length() + 1, ss[0].length());
        if (exponent) {
            result = result && is(ss[0].length() + 1, length);
        }
        return result;
    }
    ____________________________;
    public boolean middle(int i, int length) {
        if (i >= length && point) {
            if (chars[i - 2] >= '0' && chars[i - 2] <= '9') {
                return true;
            }
            return false;
        }
        for (; i < length; i++) {
            if (chars[i] < '0' || chars[i] > '9') {
                return false;
            }
        }
        return true;
    }
    public boolean is(int i, int length) {
        if (i == 1) {
            return false;
        }
        if (chars[i] == '+' || chars[i] == '-') {
            i++;
        }
        if (i == length) {
            return false;
        }
        for (; i < length; i++) {
            if (chars[i] < '0' || chars[i] > '9') {
                return false;
            }
        }
        return true;
    }
}
```

出处:

https://edu.csdn.net/practice/27544131

代码:

import java.util.*;
public class isNumber {
    public static class Solution {
        char[] chars;
        boolean point = false;
        boolean exponent = false;
        public boolean isNumber(String s) {
            s = s.trim();
            int length = s.length();
            if (length == 0) {
                return false;
            }
            chars = s.toCharArray();
            String[] ss = s.split("e");
            if (ss.length == 0) {
                return false;
            }
            if (ss[0].length() == 0)
                return false;
            if (ss[0].length() < length)
                exponent = true;
            if (ss[0].length() == length - 1) {
                return false;
            }
            String[] pre = ss[0].split("\\.");
            if (pre.length == 0) {
                return false;
            }
            if (pre[0].length() < ss[0].length())
                point = true;
            boolean result = pre(0, pre[0].length());
            result = result && middle(pre[0].length() + 1, ss[0].length());
            if (exponent) {
                result = result && is(ss[0].length() + 1, length);
            }
            return result;
        }
        public boolean pre(int i, int length) {
            if (i >= length) {
                return true;
            }
            if (chars[i] == '+' || chars[i] == '-') {
                i++;
            }
            if (i == length && !point) {
                return false;
            }
            for (; i < length; i++) {
                if (chars[i] < '0' || chars[i] > '9') {
                    return false;
                }
            }
            return true;
        }
        public boolean middle(int i, int length) {
            if (i >= length && point) {
                if (chars[i - 2] >= '0' && chars[i - 2] <= '9') {
                    return true;
                }
                return false;
            }
            for (; i < length; i++) {
                if (chars[i] < '0' || chars[i] > '9') {
                    return false;
                }
            }
            return true;
        }
        public boolean is(int i, int length) {
            if (i == 1) {
                return false;
            }
            if (chars[i] == '+' || chars[i] == '-') {
                i++;
            }
            if (i == length) {
                return false;
            }
            for (; i < length; i++) {
                if (chars[i] < '0' || chars[i] > '9') {
                    return false;
                }
            }
            return true;
        }
    }
    public static void main(String[] args) {
        Solution s = new Solution();
        String str = "0";
        System.out.println(s.isNumber(str));
        str = "e";
        System.out.println(s.isNumber(str));
        str = ".";
        System.out.println(s.isNumber(str));
        str = ".1";
        System.out.println(s.isNumber(str));
        str = "-123.456e789";
        System.out.println(s.isNumber(str));
        str = "99e2.5";
        System.out.println(s.isNumber(str));
    }
}

输出:

true
false
false
true
true
false


2. 存在重复元素 II

给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的 绝对值 至多为 k

示例 1:

输入: nums = [1,2,3,1], k = 3
输出: true

示例 2:

输入: nums = [1,0,1,1], k = 1
输出: true

示例 3:

输入: nums = [1,2,3,1,2,3], k = 2
输出: false

出处:

https://edu.csdn.net/practice/27544132

代码:

import java.util.*;
public class containsNearbyDuplicate {
    public static class Solution {
        public boolean containsNearbyDuplicate(int[] nums, int k) {
            int left = 0;
            int right = -1;
            HashMap<Integer, Integer> hashMap = new HashMap<>();
            while (left < nums.length) {
                if (right + 1 < nums.length && right - left < k) {
                    right++;
                    if (hashMap.containsKey(nums[right])) {
                        return true;
                    } else {
                        hashMap.put(nums[right], 1);
                    }
                } else {
                    hashMap.put(nums[left], hashMap.get(nums[left]) - 1);
                    if (hashMap.get(nums[left]) == 0) {
                        hashMap.remove(nums[left]);
                    }
                    left++;
                }
            }
            return false;
        }
    }
    public static void main(String[] args) {
        Solution s = new Solution();
        int[] nums = {1,2,3,1};
        System.out.println(s.containsNearbyDuplicate(nums, 3));
        int[] nums2 = {1,0,1,1};
        System.out.println(s.containsNearbyDuplicate(nums2, 1));
        int[] nums3 = {1,2,3,1,2,3};
        System.out.println(s.containsNearbyDuplicate(nums3, 2));
    }
}

输出:

true
true
false


3. 设计学生类Student和它的一个子类Undergraduate

设计一个学生类Student和它的一个子类Undergraduate,要求如下:

(1)Student类有name和age属性,一个包含两个人参数的构造器,用于给两属性赋值,一个show()方法打印Student的属性信息。
(2)本科生类Undergraduate增加一个degree(学位)属性。有一个包含三参数的构造器,前两个参数用于给集成的属性赋值,第三个参数给degree专业见值,一个show()方法用于打印Undergraduate的属性信息。
(3)在测试类中分别打印Undergraduate和Student对象,调用它们的show()

出处:

https://edu.csdn.net/practice/27544133

代码:

package T1;
public class Test {
    public static void main(String[] args) {
        Student stu = new Student("student", 100);
        stu.show();
        Undergraduate undergraduate = new Undergraduate("Undergraduate", 20, "本科");
        undergraduate.show();
    }
}
class Student {
    private String name;
    private int age;
    public Student() {
        super();
    }
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public void show() {
        System.out.println("名字:" + this.name + "\t年龄:" + this.age);
    }
}
class Undergraduate extends Student {
    private String degree;
    public Undergraduate(String name, int age, String degree) {
        super(name, age);
        this.degree = degree;
    }
    public void show() {
        System.out.println("名字:" + super.getName() + "\t年龄:" + super.getAge() + "\t学位:" + this.degree);
    }
}

输出:


🌟 每日一练刷题专栏 🌟

持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力! 

🌟 收藏,你的青睐是我努力的方向! 

评论,你的意见是我进步的财富!  

 主页:https://hannyang.blog.csdn.net/ 

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏

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

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

相关文章

基于postgresql传统数据仓库搭建

目录 概述数仓选型对比当前数仓架构问题解决方案 架构设计数据仓库设计命名规范模型设计 PostgreSQL的安装数据仓库的建立创建数据库创建用户组创建用户用户加入到用户组创建模式模式授权用户收回函数的执行权限公开表的select权限动态sql函数集中处理函数 fdw实现数据抽取安装…

ChatGPT与Discord无缝接入指南,获取你的专属聊天机器人

ChatGPT与Discord无缝接入指南,获取你的专属聊天机器人 一、获取OpenAI API密钥。二、获取Discord Token三、注册GitHub,有账号的可以直接登录。四、在线开发环境搭建Replit五、注册cron-job.org本教程收集于: AIGC从入门到精通教程 ChatGPT和Discord都非常流行,而在Disco…

基于RK3588s人工智能大算力多网口工业网关交换机,可接5路千兆高清相机

RK3588/RK3588S AI BOX 功能接口说明 接口需求 功能定义与要求 备注 成本与目标 硬件设计争取全国产化&#xff0c; 632GB 版本 RK3588S PCBA 尺寸 146*102 丝印版本号 RK3588S AI BOX V1.0 EMMC 支持 SanDisk SDINBDA4-32/64/128G 4G-8GB 标配 8GB …

tensorboard如何使用

神经网络本身比较难理解&#xff0c;看起来很神秘&#xff0c;所以我们可以借助可视化根据tensorboard关注神经网络的运行过程&#xff0c;其中包括了各项数据指标以及神经网络自身的图结构。 TensorBoard 是 TensorFlow 的可视化工具&#xff0c;可以帮助用户更好地理解和调试…

【Linux】项目自动化构建工具make/makefile

&#x1f3d6;️作者&#xff1a;malloc不出对象 ⛺专栏&#xff1a;Linux的学习之路 &#x1f466;个人简介&#xff1a;一名双非本科院校大二在读的科班编程菜鸟&#xff0c;努力编程只为赶上各位大佬的步伐&#x1f648;&#x1f648; 目录 前言一、make/makefile的背景二、…

00后卷起来,真没我们老油条什么事了···

都说00后躺平了&#xff0c;但是有一说一&#xff0c;该卷的还是卷。 这不&#xff0c;前段时间我们公司来了个00后&#xff0c;工作没两年&#xff0c;跳槽到我们公司起薪20K&#xff0c;都快接近我了。后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了。…

Android 中你碰不到但是很重要的类之ActivityThread

作者&#xff1a;Drummor 通过本文能了解一下内容 1、和系统进程打交道的桥头堡 应用进程起来之后ART(Android Runtime)第一站就是ActivityThread&#xff0c;代码层面上就是ActivityThread的main()方法&#xff0c;是不是很熟悉&#xff0c;爷青回啊&#xff0c;这不就是java…

基于深度学习的动物识别系统的实现

项目介绍 动物识别系统&#xff0c;使用Python作为主要开发语言&#xff0c;基于深度学习TensorFlow框架&#xff0c;搭建卷积神经网络算法。并通过对18种动物数据集进行训练&#xff0c;最后得到一个识别精度较高的模型。并基于Django框架&#xff0c;开发网页端操作平台&…

数据分析师 ---- SQL强化(3)

数据分析师 ---- SQL强化(3) 题目&#xff1a;每个月Top3的周杰伦歌曲 从听歌流水中找到18-25岁用户在2022年每个月播放次数top 3的周杰伦的歌曲 输入例子&#xff1a; drop table if exists play_log; create table play_log (fdate date,user_id int,song_id int ); inser…

前端的培训计划书

文章目录 导文模板一一、前言二、培训目标三、培训内容和计划 模板二模板三 导文 这里是导文 模板一 一、前言 随着互联网的快速发展&#xff0c;前端开发已经成为了现代软件开发中一个不可或缺的重要技能。本次培训旨在帮助学员快速掌握前端开发的核心知识和技能&#xff0c…

ChatGPT实现撰写邮件

撰写邮件 电子邮件是日常工作中很常用的工具&#xff0c;在相对正式的场合&#xff0c;一封格式美观、用语典雅的电子邮件正文会起到很好的作用。ChatGPT 可以较好的完成电子邮件的编写和格式美化工作。 下面让我们以产品销售的角度&#xff0c;写一封推销邮件。假定产品名称…

String类 [中]

目录 一、 string 的深浅拷贝 0x00 构造函数与析构函数的实现 0x01 拷贝构造 0x02 赋值 0x03 整体代码 二、 string的实现 0x01 引入 0x02 c_str 0x03 默认构造函数 三、size()与operator[]的实现 0x01 size()的实现 0x02 operator[]的实现 0x03 遍历实现 四、迭代器…

洛谷B2098 整数去重

整数去重 题目描述 给定含有 n n n 个整数的序列&#xff0c;要求对这个序列进行去重操作。所谓去重&#xff0c;是指对这个序列中每个重复出现的数&#xff0c;只保留该数第一次出现的位置&#xff0c;删除其余位置。 输入格式 输入包含两行&#xff1a; 第一行包含一个…

获取两个日期间时长 (XX天XX时XX分)

使用场景&#xff1a; 发货日期与到货日期 计算运输时长 代码&#xff1a; private String getMinuteTime(String startTime, String endTime) {String minuteTime null;if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)) {long minute DateUti…

【芯片设计- RTL 数字逻辑设计入门 2 - vcs 及 verdi 使用介绍】

文章目录 1.1 VCS 编译环境1.1.1 Complie Design1.1.2 simv 仿真 1.2 VCS 波形生成及查看1.2.1 verdi 命令介绍1.2.2 verdi 波形查看 1.1 VCS 编译环境 VCS 全称是 Verilog Compiler Simulator&#xff0c;是 Synopsys 公司的&#xff0c;类似于windows环境下的 questasim 或 …

Flink sql

1.创建表的执行环境 第一种 StreamExecutionEnvironment env StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(1); SingleOutputStreamOperator<Event> streamOperator env.addSource(new ClickSource()).assignTimestampsAndWatermarks(W…

深入理解C语言指针

目录 一、指针基础知识 二、野指针 三、指针运算 四、二级指针 五、指针数组与数组指针 六、函数指针与函数指针数组 一、指针基础知识 什么是指针&#xff1f; 指针其实就是个用来存放地址的变量&#xff0c;定义为type *。 指针大小&#xff1f; 32位平台(32个地…

【大数据-调度工具】dolphinscheduler安装和遇到的问题

1.安装 安装步骤按照官网安装即可 官网&#xff1a;DolphinScheduler | 文档中心 (apache.org) 版本&#xff1a;3.1.5 2.踩坑记录 Q1.大文件无法上传 问题描述&#xff1a; 在资源中心中上传文件选择完大文件夹之后&#xff0c;选择确认之后确认按钮转了几圈圈之后就没…

[Element]调整select样式

通过伪元素&#xff0c;实现这个和step长得差不多的样式 <template><el-selectv-model"value"placeholder"请选择提报单位"style"width: 430px"><el-optionv-for"(item, i) in officeList":class"el-option get…

hive的基本操作语句

背景&#xff1a;记录一下hive创建数据库&#xff0c;建表&#xff0c;添加数据&#xff0c;创建分区等的语句吧&#xff0c;省得总百度&#xff0c;&#x1f604; 第一步&#xff1a;hive的建库语句 create database pdata_dynamic;查看是否创建成功了 show databases;显示如…