目录
1. 有效数字 🌟🌟🌟
2. 存在重复元素 II 🌟🌟
3. 设计学生类Student和它的一个子类Undergraduate 🌟
🌟 每日一练刷题专栏 🌟
Golang每日一练 专栏
Python每日一练 专栏
C/C++每日一练 专栏
Java每日一练 专栏
1. 有效数字
有效数字(按顺序)可以分成以下几个部分:
- 一个 小数 或者 整数
- (可选)一个
'e'
或'E'
,后面跟着一个 整数
小数(按顺序)可以分成以下几个部分:
- (可选)一个符号字符(
'+'
或'-'
) - 下述格式之一:
- 至少一位数字,后面跟着一个点
'.'
- 至少一位数字,后面跟着一个点
'.'
,后面再跟着至少一位数字 - 一个点
'.'
,后面跟着至少一位数字
- 至少一位数字,后面跟着一个点
整数(按顺序)可以分成以下几个部分:
- (可选)一个符号字符(
'+'
或'-'
) - 至少一位数字
部分有效数字列举如下:
["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每日一练 专栏 |