【Java】哔哩哔哩编程题练习
- 博主简介:想进大厂的打工人
- 博主主页:@xyk:
- 所属专栏: JavaEE初阶
每日随心练,望各位大佬喜欢,做法有很多种,以下是我个人的想法
输入两个表示复数的字符串,输出它们相乘的结果的字符串
复数字符串用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--;}}
}