2024美团秋招第一场笔试

解题思路:

首先,根据题目可以,要输入n,n表示一共要输入的字符串个数,我们将所有的字符串用字符串数组来存储,然后遍历每一个字符串集合。

接着:在遍第几个字符串时判断该字符串具体属于哪一种分类。因此,我们需要定义一个方法,传递给它字符串参数,判断它是属于那一分类的。

在这个方法中,我们要取出字符串的第一个字符,判断它是字母还是数字,这里就会用到java中的类Character中的函数:substring()切割字符串、matches(str)字符串匹配函数、isDigit(str)判断数字函数以及isLetter(str)判断字母函数。

下面看具体的Java代码:

package jxkjsfdx.lgq;

import java.util.Scanner;

public class Demo02 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // 输入字符串个数n
        int n = sc.nextInt();
        String[] strings = new String[n];

        // 录入字符串
        for (int i = 0; i < n; i++) {
            strings[i] = sc.next();
        }

        // 判断字符串属于哪一种分类
        for (int i = 0; i < strings.length; i++) {
            String strClassify = strClassify(strings[i]);
            System.out.println(strClassify);
        }
    }

    private static String strClassify(String strings) {
        // 首先获取字符串的首个字符
        char firstChar = strings.charAt(0);
        String rest_strings = strings.substring(1, strings.length());

        if (Character.isLetter(firstChar)){
            // 首字符是字母
            if (rest_strings.matches("\\d*")){
                // 此时属于第一种分类情况:如果ID以字母开头,并且字母后面的字符全是数字,则属于“standard”。
                return "standard";
            }else if (rest_strings.matches(".*\\d.*") & rest_strings.matches(".*[a-zA-Z].*")){
                // 此时属于第三种情况:如果ID以字母开头,并且字母后面的字符同时包含字母和数字,则属于“mix”。
                return "mix";
            }
        }else if (Character.isDigit(firstChar)){
            // 首字符是数字
            if (rest_strings.matches("[a-zA-Z]*")){
                return "special";
            }
            }else {
                // 首字符既不是字母也不是数字
                return "invalid";
            }
        // 其他情况均返回invalid
        return "invalid";
    }
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务