• 输入n个字符串,找出最长最短字符串(若有个数相同的,都打印出来)


        首先,要求找到最长最短字符串,我们应该用数组将其存起来,输入的个数是不固定的,我们就可以用Scanner获取要输入的个数,最终找到的个数也不固定,我们可以封装两个方法,并且返回值类型为数组。

    我遇到的问题,开始我想到的是字符串拼接,么想到返回值用数组存,导致每次返回的个数都是固定的,就算有多个。

    代码如下:

    import java.util.Scanner;
    
    //输入n行字符串,找出最长最短字符串(若有个数相同的,都打印出来)
    public class FindString {
    
        public static void main(String[] args) {
            Scanner s = new Scanner(System.in);
            System.out.println("请输入n个字符串");
            int n = s.nextInt();
            String[] arr = new String[n];
            s.nextLine();
            System.out.println("请输入字符串");
            for (int i = 0; i < n; i++) {
                arr[i] = s.nextLine();
            }
    
            String[] max = findMax(arr,arr[0]);
            System.out.println("最长的: ");
            for (int i = 0; i < max.length; i++) {
                if(max[i] != null){
                System.out.print(max[i]+" ");
                }
            }
            System.out.println();
    
            String[] min = findMin(arr,arr[0]);
            System.out.println("最短的:");
            for (int i = 0; i < min.length; i++) {
                if(min[i] != null){
                    System.out.print(min[i]+" ");
                }
            }
        }
    
        /**
         * 找最短的
         * @param arr 输入的数组
         * @param s 数组的第一个元素
         * @return  返回的数组中放着最长的子串和null
         */
        private static String[] findMin(String[] arr, String s) {
            int min = s.length();
            String[] temp = new String[arr.length];
            for (int i = 1; i < arr.length ; i++) {
                if(arr[i].length() < min) {
                    min = arr[i].length();
                    s = arr[i];
                }
            }
            //走完说明找到了一个最长的,以这个长度为参考再遍历一遍数组,找到与其相同长度的
            for (int j = 0; j < arr.length ; j++) {
                if( arr[j].length() == s.length()){
                    temp[j] = arr[j];
                }
            }
    
            return temp;
    
        }
    
        private static String[] findMax(String[] arr, String s) {
            int max = s.length();
            String[] temp = new String[arr.length];
            for (int i = 1; i < arr.length ; i++) {
                if(arr[i].length() > max) {
                    max = arr[i].length();
                    s = arr[i];
                }
            }
            for (int j = 0; j < arr.length ; j++) {
                if( arr[j].length() == s.length()){
                    temp[j] = arr[j];
                }
            }
    
            return temp;
        }
    }
  • 相关阅读:
    MySQL中的排序
    为什么删除记录表文件不会减小?(记录的插入与删除在磁盘上的变化)
    Mysql 中的MDL
    Redis 基础知识点总结
    分布式系统中的CAP理论与Base理论
    Java基础篇(JVM)——Class对象
    Java基础篇(JVM)——类加载机制
    Java基础篇(JVM)——总领
    数据结构与算法小结——排序(八)
    数据结构与算法小结——排序(七)
  • 原文地址:https://www.cnblogs.com/128-cdy/p/11839100.html
Copyright © 2020-2023  润新知