- 博主简介:想进大厂的打工人
- 博主主页:@xyk:
- 所属专栏: JavaEE初阶
每日随心练,望各位大佬喜欢,做法有很多种,以下是我个人的想法
目录
一、复数乘法
二、一年中的第几天
三、k个一组翻转链表
一、复数乘法
输入两个表示复数的字符串,输出它们相乘的结果的字符串
复数字符串用a+bi表示(a, b 为整数, i为虚数单位,i2=1)
输入描述:
两个表示复数的字符串
输出描述:
两个数相乘的结果的字符串
代码如下:
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String a = scanner.next();
String b = scanner.next();
String[] ch = a.split("\\+");
String[] ch2 = b.split("\\+");
int m = StringtoInt(ch[0]);
int m1 = StringtoInt(ch[1]);
int n = StringtoInt(ch2[0]);
int n1 = StringtoInt(ch2[1]);
int f = m * n - m1 * n1;
int s = m * n1 + m1 * n;
System.out.println(f + "+" + s + "i");
}
private static int StringtoInt(String s) {
int num = 0;
int flag = 1;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '-') {
flag = -1;
} else if (s.charAt(i) >= '0' && s.charAt(i) <= '9') {
num = num * 10 + (s.charAt(i) - '0');
}
}
return num * flag;
}
}
二、一年中的第几天
输入一个"YYYY-MM-dd"格式的日期字符串,输出该天是当年的第几天(1 月 1 日是每年的第 1 天)
输入描述:
一个"YYYY-MM-dd"格式的表示日期的字符串
输出描述:
该天是当年的第几天
代码如下:
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
int[] days = {0,31,28,31,30,31,30,31,31,30,31,30,31};
String[] ch = str.split("-");
int sum = 0;
int year = Integer.parseInt(ch[0]);
int month = Integer.parseInt(ch[1]);
int day = Integer.parseInt(ch[2]);
sum += day;
for (int i = 1; i < month; i++) {
sum += days[i];
}
if (((year % 4 == 0 && year % 100 !=0) || year % 400 == 0) && month > 2){
sum = sum + 1;
}
System.out.println(sum);
}
}
三、k个一组翻转链表
给你一个链表,每 k 个节点一组进行翻转,请返回翻转后的链表。
如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。
输入描述:
第一行:依次输入链表中的各个元素,以"#"结束
第二行:每组数量k
输出描述:
处理后的链表中的各个元素,以"->"连接
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
String[] strArr = str.split(" ");
int k = scanner.nextInt();
int start = 0;
while (start + k - 1 < strArr.length - 1){
reverse(strArr,start,start + k - 1);
start = start + k;
}
for (int i = 0; i < strArr.length - 2; i++) {
System.out.print(strArr[i] + "->");
}
System.out.println(strArr[strArr.length - 2]);
}
private static void reverse(String[] strArr, int start, int end) {
while (start < end){
String tmp = strArr[start];
strArr[start] = strArr[end];
strArr[end] = tmp;
start++;
end--;
}
}
}