文章目录
- 一、选择
- 1.
- 2.(写错)
- 3.
- 4.
- 5.
- 6.(不会)
- 7.(不清晰)
- 8. (不会)
- 9.
- 10.(写错)
- 二、编程
- 1. 排序子序列
- 解法:
- 代码:
- 2. 倒置字符串
- 解法:
- 代码:
一、选择
1.
正确答案:D
2.(写错)
正确答案:B
因为 toLowerCase 在转化完之后,是创建了一个新的对象
所以这两个肯定不同
3.
正确答案:A
静态方法的调用不依赖于任何对象
4.
正确答案:A
5.
正确答案:B
6.(不会)
正确答案:D
静态成员变量不能再方法中
应该在类中
7.(不清晰)
正确答案:D
A:abstract 不能修饰字段
B:抽象方法不能加{}
8. (不会)
正确答案:C
A:class 中的 constructor 可以省略
B:constructor 与 class 同名,方法也可以
9.
正确答案:A
10.(写错)
正确答案:D
要实现接口肯定得是 public 修饰
二、编程
1. 排序子序列
原题链接
解法:
首先我们要知道什么是非递增排列,什么是非递减排列
1,2,3,4,5 就是递增排列
9,8,7,6,5 就是递减排列
1,2,3,3,4,5,8,8 就是非递增排列
9,8,7,7,6,5,5,2,1 就是非递增排列
非递减就是 a[i]<=a[i+1]
递减就是 a[i]>a[i+1]
非递增就是 a[i]>=a[i+1]
递增就是 a[i]<a
要循环判断arr[i] 与arr[i+1] 的大小
注意不要数组越界
代码:
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
int n = in.nextInt();
int[] arr = new int[n + 1];
for (int i = 0; i < n; i++) {
arr[i] = in.nextInt();
}
int i = 0;
int count = 0;
while(i < n) {
//非递减
if(arr[i] < arr[i+1]) {
while(i < n && arr[i] < arr[i + 1]) {
i++;
}
count++;
i++;
}else if(arr[i] == arr[i+1]) {
i++;
}else {
while(i < n && arr[i] > arr[i + 1]) {
i++;
}
count++;
i++;
}
}
System.out.println(count);
}
}
}
2. 倒置字符串
原题链接
解法:
使用字符串分割将字符串以 空格 分开
在把字符数组逆序输出
代码:
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextLine()) { // 注意 while 处理多个 case
String s = in.nextLine();
int count = 0;
char[] ch = s.toCharArray();
for(int i = 0; i < ch.length; i++) {
if(ch[i] == ' ') {
count++;
}
}
String[] ret = s.split(" ",count + 1);
int m = ret.length;
for(int i = m - 1; i >= 0; i--) {
System.out.print(ret[i] + " ");
}
}
}
}