周报
代码行数:
周一 | 581 |
周二 | 601 |
周三 | 615 |
周四 | 591 |
周五 | 570 |
周六 | 561 |
周日 | 577 |
遇到的问题:
项目启动很慢,要将近5分钟才能开启项目,对开发造成很大困扰。
断点打在奇怪的地方,造成启动缓慢。断点静音后项目恢复正常。
判断字符串是否包含某个字符:str.contains(“@”);
判断字符串是否完全由数字构成:org.apache.commons.lang3.StringUtils提供了丰富的字符串解析的工具包,其中isNumeric(String Str)就是提供解析是否为数字类型的方法。
StringUtils.isNumeric(str);
源代码:
public static boolean isNumeric(final CharSequence cs) {
// 判断是否为空,如果为空则返回false
if (isEmpty(cs)) {
return false;
}
// 通过 length() 方法计算cs传入进来的字符串的长度,并将字符串长度存放到sz中
final int sz = cs.length();
// 通过字符串长度循环
for (int i = 0; i < sz; i++) {
// 判断每一个字符是否为数字,如果其中有一个字符不满足,则返回false
if (!Character.isDigit(cs.charAt(i))) {
return false;
}
}
// 验证全部通过则返回true
return true;
}
字符串最后一位是不是空格
endsWith(“ ”)
算法题:
问题描述
小蓝要把一个字符串中的字母按其在字母表中的顺序排列。
例如,LANQIAO 排列后为 AAILNOQ。
又如,GOODGOODSTUDYDAYDAYUP 排列后为 AADDDDDGGOOOOPSTUUYYY。
请问对于以下字符串,排列之后字符串是什么?
WHERETHEREISAWILLTHEREISAWAY
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String arr = "WHERETHEREISAWILLTHEREISAWAY";
char arr1[] = arr.toCharArray();//将字符串转为数组
Arrays.sort(arr1);//数组排序
for(int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i]);
}
}
比较Date大小
dates[i].compareTo(dates[j]) > 0
小 -1,等 0,大 1
String->Date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date datr=sdf.parse(str);
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
X 星球的一处迷宫游乐场建在某个小山坡上。它是由 10×1010×10 相互连通的小房间组成的。
房间的地板上写着一个很大的字母。我们假设玩家是面朝上坡的方向站立,则:
�L 表示走到左边的房间,
�R 表示走到右边的房间,
�U 表示走到上坡方向的房间,
�D 表示走到下坡方向的房间。
X 星球的居民有点懒,不愿意费力思考。他们更喜欢玩运气类的游戏。这个游戏也是如此!
开始的时候,直升机把 100100 名玩家放入一个个小房间内。玩家一定要按照地上的字母移动。
迷宫地图如下:
UDDLUULRUL
UURLLLRRRU
RRUURLDLRD
RUDDDDUUUU
URUDLLRRUU
DURLRLDLRL
ULLURLLRDU
RDLULLRDDD
UUDDUDUDLL
ULRDLUURRR
请你计算一下,最后,有多少玩家会走出迷宫,而不是在里边兜圈子?
如果你还没明白游戏规则,可以参看下面一个简化的 4x4 迷宫的解说图:
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
static char[][] arr;
static int[][] vis;
static int ans=0;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//在此输入您的代码...
arr=new char[10][10];
for(int i = 0;i<arr.length;i++) {
String s = scan.next();
arr[i] = s.toCharArray();
}
for(int i=0;i<arr.length;i++){
for(int j = 0;j<arr[0].length;j++) {
vis=new int[10][10];
dfs(i,j);
}}
System.out.println(22);
scan.close();
}
public static void dfs(int x,int y){
if(x<=-1||y>=10||y<=-1||x>=10){
ans++;
return;
}
if(vis[y][x]==1){
return;
}
vis[y][x]=1;
if(arr[y][x]=='U'){
dfs(x,y-1);
}
if(arr[y][x]=='D'){
dfs(x,y+1);
}
if(arr[y][x]=='L'){
dfs(x-1,y);
}
if(arr[y][x]=='R'){
dfs(x+1,y-1);
}
}
}
日期问题
题目描述
小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在 1960 年 1 月 1 日至 2059 年 12 月 31 日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。
更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在很多可能的日期与其对应。
比如 02/03/04,可能是 2002 年 03 月 04 日、2004 年 02 月 03 日或 2004 年 03 月 02 日。
给出一个文献上的日期,你能帮助小明判断有哪些可能的日期对其对应吗?
输入输出样例
示例
输入
02/03/04
输出
2002-03-04
2004-02-03
2004-03-02
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class RiQiWenTi {
public static void main(String[] args) throws ParseException {
Scanner scan = new Scanner(System.in);
//在此输入您的代码...
String d = scan.nextLine();
String[] strs = d.split("/");
Integer[] integers = new Integer[3];
for (int i = 0; i < 3; i++) {
integers[i] = Integer.valueOf(strs[i]);
}
String[] s012 = new String[3];
Integer[] i012 = new Integer[3];
s012[0] = strs[0];
s012[1] = strs[1];
s012[2] = strs[2];
i012[0] = integers[0];
i012[1] = integers[1];
i012[2] = integers[2];
String[] s201 = new String[3];
Integer[] i201 = new Integer[3];
s201[0] = strs[2];
s201[1] = strs[0];
s201[2] = strs[1];
i201[0] = integers[2];
i201[1] = integers[0];
i201[2] = integers[1];
String[] s210 = new String[3];
Integer[] i210 = new Integer[3];
s210[0] = strs[2];
s210[1] = strs[1];
s210[2] = strs[0];
i210[0] = integers[2];
i210[1] = integers[1];
i210[2] = integers[0];
String pd1 = panduan(s012, i012);
String pd2 = panduan(s210, i210);
String pd3 = panduan(s201, i201);
String[] strings = new String[4];
strings[0] = pd1;
strings[1] = pd2;
strings[2] = pd3;
Date[] dates = new Date[4];
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if (pd1 != null) {
dates[0] = sdf.parse(pd1);
}
if (pd2 != null) {
dates[1] = sdf.parse(pd2);
}
if (pd3 != null) {
dates[2] = sdf.parse(pd3);
}
for (int i = 0; i < 3; i++) {
for (int j = i + 1; j < 3; j++) {
if (dates[i] == null || dates[j] == null) {
} else {
if (dates[i].compareTo(dates[j]) > 0) {
dates[3] = dates[i];
dates[i] = dates[j];
dates[j] = dates[3];
strings[3] = strings[i];
strings[i] = strings[j];
strings[j] = strings[3];
}else if (dates[i].compareTo(dates[j])==0){
strings[j]=null;
}
}
}
}
if (strings[0] != null) {
System.out.println(strings[0]);
}
if (strings[1] != null) {
System.out.println(strings[1]);
}
if (strings[2] != null) {
System.out.println(strings[2]);
}
scan.close();
}
public static String panduan(String[] strings, Integer[] integers) {
int[] max_days = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int[] Rmax_days = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (integers[0] % 4 == 0) {
if (integers[1] <= 12 && integers[1] > 0 && integers[2] > 0 && integers[2] <= Rmax_days[integers[1]]) {
if (integers[0] < 60) {
return ("20" + strings[0] + "-" + strings[1] + "-" + strings[2]);
} else {
return ("19" + strings[0] + "-" + strings[1] + "-" + strings[2]);
}
}
} else {
if (integers[1] <= 12 && integers[1] > 0 && integers[2] > 0 && integers[2] <= max_days[integers[1]]) {
if (integers[0] < 60) {
return ("20" + strings[0] + "-" + strings[1] + "-" + strings[2]);
} else {
return ("19" + strings[0] + "-" + strings[1] + "-" + strings[2]);
}
}
}
return null;
}
}