睡好、吃好、喝好,才能能量满满
问题描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝要把一个字符串中的字母按其在字母表中的顺序排列。
例如,LANQIAO 排列后为 AAILNOQ。
又如,GOODGOODSTUDYDAYDAYUP 排列后为 AADDDDDGGOOOOPSTUUYYY。
请问对于以下字符串,排列之后字符串是什么?
WHERETHEREISAWILLTHEREISAWAY
运行限制
最大运行时间:1s
最大运行内存: 512M
题解思路:
刚开始把字符串分解成字符进行排列、排列又要有顺序 --TreeSet
😅忘记set集合去重了
换一个思路 : 将字符串转换为数组排序
冒泡排序
外层for控制遍历的次数 length-1次
内层for 采用【i】和【i+1】比较冒泡,因为每一次都会将最大值丢后面去所以【-i】
static void MaoP(char[] arr){
for (int i = 0; i < arr.length - 1 ; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if(arr[j+1] < arr[j]){
char temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
}
选择排序
外层for控制有序序列
内层for 将最小值搬到有序序列中、依次排列
static void XZhe(char[] arr){
for (int i = 0 ; i < arr.length ; i++){
char temp = arr[i];
for(int j = i+1 ; j < arr.length ; j++){
if(arr[j] < temp){
temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
}
插入排序
默认第一位置的元素为有序序列
后面的元素根据序列进行排序,比有序序列小的插入到序列中,大的插入到序列后面
static void ChaRu(char[] arr){
for (int i = 1; i < arr.length; i++) {
//记录当前柱的下标和值,确定元素该插入的位置!
int index = i ;
char value = arr[i];
while ((index > 0) && (value < arr[index-1])){
arr[index] = arr[index - 1];
index--;
}
arr[index] = value;
}
}
APi - Arrays.sort();
害、先写这几个简单的,要上课了!!
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//在此输入您的代码...
String s = "WHERETHEREISAWILLTHEREISAWAY";
char[] arr = s.toCharArray();
Arrays.sort(arr);
for(char a : arr) System.out.print(a);
}
}
问题描述
给定两个不同的正整数
a,
b, 求一个正整数
k 使得
gcd(
a+
k,
b+
k) 尽可能 大, 其中 gcd(
a,
b) 表示
a 和
b 的最大公约数, 如果存在多个
k, 请输出所有满 足条件的
k 中最小的那个。
输入格式
输入一行包含两个正整数
a,
b, 用一个空格分隔。
输出格式
输出一行包含一个正整数
k 。
样例输入
5 7
样例输出
1
解题思路:
求gcd呗! 参考博文
一文搞定最大公约数
最后再瞅了几下评论区 ^==^
更相减损法 -> 题目中要获取最大的gcd、所以采用这个方法减一次;通过俩数相减得到数默认为gcd
gcd - 需要当前数 = 需要补的余数!
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//在此输入您的代码...
long a = scan.nextLong();
long b = scan.nextLong();
if(a == b) System.out.println(0);
else{
long c = Math.abs(a - b);
long d = c - a%c;
System.out.println(d);
}
scan.close();
}
}
AC截图: