11.15笔试 第一题65%

路过的朋友们帮看看哪里有问题呢,测试案例都可以通过

import java.util.Scanner;

/** 测试案例
 * 5
 * 01.a.111111.2.22222.31.3.rc11.10.0b2222210.1.c11111
 *
 * 5
 * 1.2.02555 1.2.2555 1.2.ABA 1.2.0ABA 1.2.0ABA.C
 */

public class Main {
    public static void main(String[] args) {
        //读取输入并转换成字符串数组
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        s.nextLine();
        String[] inputStrings = s.nextLine().split(" ");

        StringBuilder result = new StringBuilder();
        //用来标记是否前后相邻且 重复 string.equals()
        String cur = "";
        //对每个字符串进行判断是否 合法的版本号
        for (String word : inputStrings) {
            //判断前3个条件
            String afterRemoveHead0 = checkFisrtThreeRules(word);
            if (afterRemoveHead0 != null) {
                //第4个条件判断 是否和前一个重复
                if (!cur.equals(afterRemoveHead0)) {
                    result.append(afterRemoveHead0 + " ");
                    cur = afterRemoveHead0;
                }
            }
        }
        result.deleteCharAt(result.length() - 1);
        System.out.print(result.toString());
    }

    static String checkFisrtThreeRules(String s) {
        StringBuilder stringBuilder = new StringBuilder();
        //第一条规则,首先以英文点分割三段
        String[] split = s.split("\\.");
        if (split.length != 3) {
            return null;
        }
        //第2条规则,去除第三段包含 rc
        if (split[2].contains("rc")) {
            return null;
        }
        //第3条规则,去除有 英文字符的
        if (split[0].matches(".*[a-zA-Z].*") || split[1].matches(".*[a-zA-Z].*")) {
            return null;
        }

        //第5个条件 去除 前导0
        for (String parts : split) {
            stringBuilder.append(parts.replaceFirst("^0+", ""));
            stringBuilder.append('.');
        }
        stringBuilder.deleteCharAt(stringBuilder.length() - 1);
        return stringBuilder.toString();
    }
}

#悬赏#
全部评论
校友还没签么
点赞 回复 分享
发布于 2023-11-16 12:41 江西
因为你0+,遇到1.000.1的时候,你会变成1..1 ,我在外面包了个循环,将空子串变成0
点赞 回复 分享
发布于 2023-11-23 17:28 香港
parts = ['0' if p == '' else p for p in [p.lstrip('0') for p in parts]]
点赞 回复 分享
发布于 2023-11-23 17:29 香港

相关推荐

秋招进行到现在终于能写总结了。完全没想到战线会拉这么长,过程会如此狼狈,不过更应该怪自己太菜了。好在所有的运气都用在了最后,也是有个去处。背景:双2本硕科班,无竞赛,本科一段研究所实习,硕士一段大厂暑期实习但无转正。技术栈是C++ & Golang,实习是客户端音视频(而且是鸿蒙端开发),简历两个C++项目一个Golang项目。主要投递岗位:后端,cpp软开,游戏服务端,测开,以及一些不拘泥于Java的岗位。从8月起总共投递123家公司,笔试数不清了,约面大约30家。offer/oc/意向:友塔游戏(第一个offer,面试体验很好,就是给钱好少南瑞继保(计算机科班点击就送(限男生),不...
乡土丁真真:佬很厉害,羡慕~虽然我还没有到校招的时候,也想讲一下自己的看法:我觉得不是CPP的问题,佬的背书双2,技术栈加了GO,有两段实习。投了123,面了30.拿到11个offer。这个数据已经很耀眼了。这不也是CPP带来的吗?当然也不止是CPP。至少来说在这个方向努力过的也会有好的结果和选择。同等学历和项目选java就会有更好的吗?我个人持疑问态度。当然CPP在方向选择上确实让人头大,但是我觉得能上岸,至于最后做什么方向,在我看来并不重要。至于CPP特殊,有岗位方向的随机性,java不是不挑方向,只是没得选而已。也希望自己以后校招的时候能offer满满
点赞 评论 收藏
分享
11-15 19:28
已编辑
蚌埠坦克学院 硬件开发
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务