Java op复习(四)

本文探讨了多种算法和数据结构的应用,包括排序算法、字符串处理、数组操作和中位数计算。通过实例展示了如何使用Java实现这些算法,如检查数字顺序、调整字符串首字母大小、构建优美字符串和计算小白鼠的排队顺序。此外,还涉及到了中位数的计算方法,适合对算法和数据结构感兴趣的读者深入理解。
摘要由CSDN通过智能技术生成

31:Checking Order

总时间限制:1000ms      内存限制:65536kb

描述

输入长度为5的数字串,检查是否是按从小到大的顺序排列,如果是,输出Yes;否则,输出No,并输出从小到大排序后的结果。

输入

长度为5的一串数字;

输出

判断结果及排序后的结果。

样例输入

1 3 5 7 9

5 3 44 7 3

1 1 2 2 3

样例输出

Yes

No 3 3 5 7 44

Yes

代码:

import java.util.Arrays;
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] a=new int[5];
        while (sc.hasNext()) {
            for (int i = 0; i < a.length; i++) {
                a[i]=sc.nextInt();
            }
            if (f(a)) {
                System.out.println("Yes");
            }
            else{
                System.out.print("No ");
                Arrays.sort(a);//排序,默认为升序
                for (int j : a) {//增强for循环,遍历数组
                    System.out.print(j+" ");
                }
                System.out.println();//必不可少,否则会出现presentation error
            }
        }
    }
 
static boolean f(int[] a){
    for (int i = 0; i < a.length-1; i++) {
        if (a[i+1]<a[i]) {//比较数组元素大小
            return false;
        }
    }
    return true;
}
}

32:首字母大小

总时间限制:1000ms      内存限制:65536kb

描述

对一个字符串中的所有单词,如果单词的首字母不是大写字母,则把单词的首字母变成大写字母。在字符串中,单词之间通过空白符分隔,空白符包括:空格(' ')、制表符('\t')、回车符('\r')、换行符('\n')。

输入

输入一行:待处理的字符串(长度小于80)。

输出

输出一行:转换后的字符串。

样例输入

if so, you already have a google account. you can sign in on the right. 

样例输出

If So, You Already Have A Google Account. You Can Sign In On The Right.

代码:

import java.util.Arrays;
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        char[] x = s.toCharArray();//字符串转数组
        boolean flag=true;
        for (int i=0; i<x.length; i++) {
            char c = x[i];
            if(flag==true){
                if(c>='a'&&c<='z'){
                    x[i]=(char)(c-32);
                }
            }
            if(c==' '||c=='\t'||c=='\r'||c=='\n'){
                flag=true;
            }
            else{
                flag=false;
            }
 
        }
        System.out.println(new String(x));
    }
 
}

33:优美字符串

总时间限制:1000ms      内存限制:65536kb

描述

对于给定的两个字符串,我们将要做的是将它们拼接起来,拼接成一个“优美”的字符串,那么什么样的字符串是优美的呢?举一个例子,我们要求拼接时,第一个字符串ABCE在前,第二个字符串CEDF在后,拼接的结果是ABCECEDF,接着,我们要对这个ABCECEDF进行修饰,要求将它们在连接处相同的子串重叠在一起,重叠之后的结果为ABCEDF,这就是拼接形成的优美的字符串,现在请你完成这个任务。。

输入

输入包含两个用空格隔开的字符串s1和s2

输出

输出一个字符串,表示拼接之后的“优美字符串”

样例输入

ABB ABB

样例输出

ABB

代码:

import java.util.Arrays;
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s1 = sc.next();
        String s2 = sc.next();
        for(int i=s2.length();i>=0;i--){
            String ts1 = s2.substring(0, i);//substring截取下标从a开始到b结束的字符,[a,b)
            if (s1.endsWith(ts1)) {//endwith检测指定字符串是否以指定的后缀结束
                System.out.println(s1.concat(s2.substring(i)));//将几个字符串连接到一起
                return;
            }
        }
    }
 
}

substring:

substring(int beginIndex)方法根据传入的索引截取当前字符串,截取到末尾

substring(int beginIndex, int endIndex)方法截取字符串并返回其[beginIndex,endIndex-1]范围内的内容。


34:小白鼠再排队

总时间限制:1000ms      内存限制:65536kb

描述

N只小白鼠(1 < N < 100),每只鼠头上戴着一顶有颜色的帽子。现在称出每只白鼠的重量,要求按照白鼠重量从小到大的顺序输出它们头上帽子的颜色。帽子的颜色用 “red”,“blue”等字符串来表示。不同的小白鼠可以戴相同颜色的帽子。白鼠的重量用整数表示。

输入

输入第一行为一个整数N,表示小白鼠的数目。
下面有N行,每行是一只白鼠的信息。第一个为正整数,表示白鼠的重量,不超过整型范围;第二个为字符串,表示白鼠的帽子颜色,字符串长度不超过10个字符。

注意:白鼠的重量各不相同。

输出

按照白鼠的重量从小到大的顺序输出白鼠的帽子颜色。

样例输入

3

30 red

50 blue

40 green

样例输出

red

green

blue

代码:

import java.util.Arrays;
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        Mouse[] ms = new Mouse[n];
        for (int i = 0; i < n; i++) {
            ms[i] = new Mouse(sc.nextInt(), sc.next());
        }
        Arrays.sort(ms, (m1, m2) -> m1.weight - m2.weight);//
        for (Mouse m : ms) {
            System.out.println(m.color);
        }
    }
 
}
 
class Mouse {
 
    int weight;
    String color;
 
    public Mouse(int weight, String color) {
        super();
        this.weight = weight;
        this.color = color;
    }
 
}

35:中位数

总时间限制:1000ms      内存限制:65536kb

描述

中位数定义:一组数据按从小到大的顺序依次排列,处在中间位置的一个数或最中间两个数据的平均值(如果这组数的个数为奇数,则中位数为位于中间位置的那个数;如果这组数的个数为偶数,则中位数是位于中间位置的两个数的平均值).
给出一组无序整数,求出中位数,如果求最中间两个数的平均数,向下取整即可(不需要使用浮点数)

输入

该程序包含多组测试数据,每一组测试数据的第一行为N,代表该组测试数据包含的数据个数,1 <= N <= 15000.
接着N行为N个数据的输入,N=0时结束输入

输出

输出中位数,每一组测试数据输出一行

样例输入

4

10

30

20

40

3

40

30

50

4

1

2

3

4

0

样例输出

25

40

2

代码:

import java.util.Scanner;
import java.util.Arrays;
public class Main{
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		while(true) {
			int n=sc.nextInt();
			if(n==0) {
				break;
			}
			int [] sz=new int[n];
			for(int i=0;i<n;i++) {
				sz[i]=sc.nextInt();
			}
			Arrays.sort(sz);
			  if(n%2==0){
	                int t1=n/2;
	                System.out.println((sz[t1]+sz[t1-1])/2);
	            }
	            else{
	                System.out.println(sz[(n-1)/2]);
	            }
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值