找最长最短字符串

Posted laurarararararara

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了找最长最短字符串相关的知识,希望对你有一定的参考价值。

2019-11-11  22:18:09

练习1输入n行字符串,找到字符串里面最长、最短的字符串;如果相同最长、最短的情况,一并打印。

最初思想:将n行字符串存入数组中。(Scanner s=new Scanner(System.in);)

写找最长字符串的方法:先将0号元素记为长度最长的字符串。用max值记录当前0号位元素的长度。for循环遍历剩下的字符串,如果有长度比它大的,将max值更新为新的字符串的长度,将字符串更新为当前字符串。找最短字符串的方法同理。

如果有相同长度长的字符串,怎么办?开始的想法是:同样长度的字符串可能不止一个,所以另外开辟一个数组,将同样长度的字符串存入数组中,最后返回数组。最后没有改成功,又想到了用字符串拼接的方法;定义另一个字符串,如果有相等长度的,就将两个字符串拼接起来,返回拼接后的字符串

private static String findMin(String[] arr) {
        String str4 = arr[0];
        //String str5 = arr[arr.length-1];
        int min = str4.length();
        for (int i = 1; i < arr.length; i++) {
            if (arr[i].length() < min) {
                min = arr[i].length();
                str4 = arr[i];
                for (int j = i+1; j < arr.length; j++) {
                    if (arr[j].length() == arr[i].length()) {
                        String str5= arr[j];
                        str4=str4+" "+str5;
                    }
                }
            }
        }
        return str4+" ";
    }

起初,将另外可能存在的字符串定义在了开始,但是这个字符串不一定存在,所以后来将它定义在了判断语句里面;实现了字符串的拼接,将拼接后的结果返回。

还有一个问题,在主函数中:因为要输入字符串的个数,所以先输入一个数字,再提醒输入要比较的字符串后,因为输入格式发生了变化,编译器会默认将回车当成一个字符串,所以需要一个nexLine(),将回车键换掉。还有:缺少了将输入的字符串存入到要比较的数组里面的语句(粗心!!)

        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();
        }

整个代码为:

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);
        System.out.println("最大的字符串:" + max.toString());//String已经重写了toString方法,所以会打印出字符串
        String min = findMin(arr);
        System.out.println("最小的字符串:" + min.toString());
    }

    private static String findMin(String[] arr) {
        String str4 = arr[0];
        //String str5 = arr[arr.length-1];
        int min = str4.length();
        for (int i = 1; i < arr.length; i++) {
            if (arr[i].length() < min) {
                min = arr[i].length();
                str4 = arr[i];
                for (int j = i+1; j < arr.length; j++) {
                    if (arr[j].length() == arr[i].length()) {
                        String str5= arr[j];
                        str4=str4+" "+str5;
                    }
                }
            }
        }
        return str4+" ";
    }
    private static String findMax(String[] arr) {
        String str = arr[0];  //将数组的0号位定义为str长度最长的字符串,依次比较
        //String str6 = arr[arr.length - 1];
        //String[] strr = new String[arr.length];
        int max = str.length();
        for (int i = 1; i < arr.length; i++) {
            if (arr[i].length() > max) {   //如果某个字符串的长度比它大
                max = arr[i].length(); //将该字符串的长度更新为最大的
                str = arr[i]; //并将该字符串赋给str
                for (int j = i+1; j < arr.length; j++) { //如果有与这个字符串相同长度的
                    if (arr[j].length() == arr[i].length()) {
                        String str6 = arr[j];  //将这个字符串给新的str6,然后一起打印出来
                        str=str+"  "+str6;
                    }
                }
            }
        }
        return str + " ";
    }

}

技术图片

 

 

以上是关于找最长最短字符串的主要内容,如果未能解决你的问题,请参考以下文章

1195.最长&最短文本

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

选择最短和最长的字符串

华科考研机试题最长&最短文本

JavaScript笔试题(js高级代码片段)

循环 2 个列表,重复最短直到最长结束