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

Posted 蔡小菜i

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了输入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;
    }
}

 

以上是关于输入n个字符串,找出最长最短字符串(若有个数相同的,都打印出来)的主要内容,如果未能解决你的问题,请参考以下文章

找最长最短字符串

求两个输入的字符串的最长公共子串

C语言找出最长的字符串。输入5个字符串,输入其中最长的字符串。

Leetcode 题目整理-4

C语言:从键盘输入10个字符串,找出一个最长的字符串。

最短母串