题解 | #简单错误记录#

简单错误记录

https://www.nowcoder.com/practice/2baa6aba39214d6ea91a2e03dff3fbeb

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
    public static void main(String[] args) {
        BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer ab = new StringBuffer();//输出结果
        String a;
        String[] ans = new String[8];//存放最后8条
        char[] chs;
        char[][] way = new char[100][16];//存放路径
        int i, j, k = 0;
        int[] ls = new int[100];//存放行号
        int[] num = new int[100];//存放数目
        boolean b;
        try {
            while ((a = r.readLine()) != null && !a.isEmpty()) {
                chs = a.toCharArray();
                i = chs.length - 1;
                j = 15;
                b = false;
                while (i >= 0) {//逆序遍历,获得路径
                    if (chs[i] == ' ') {
                        b = true;
                        i--;
                        continue;
                    }
                    if (chs[i] == '\\') break;
                    if (j == -1) break;
                    if (b) way[k][j--] = chs[i];
                    i--;
                }
                i = 0;
                b = false;
                while (i < chs.length) {//顺序遍历,获得行号
                    if (chs[i] == ' ') {
                        b = true;
                        i++;
                        continue;
                    }
                    if (b) {
                        ls[k] *= 10;
                        ls[k] += chs[i] - '0';
                    }
                    i++;
                }
                num[k] = 1;//记录数为1
                k++;//记录+1
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        i = 0;
        while (i < 99) {
            if (way[i][15] == '\u0000') {
                i++;
                continue;
            }
            j = i + 1;
            while (j < 100) {
                if (way[j][15] == '\u0000') {
                    j++;
                    continue;
                }
                k = 0;
                while (k < 16) {
                    if (way[i][k] != way[j][k]) break;
                    k++;
                }
                if (k == 16 && ls[i] == ls[j]) {//路径相等且行号相等
                    num[i]++;//数目+1
                    way[j][15] = '\u0000';//最后一个字符置为空,以示标记
                }
                j++;
            }
            i++;
        }
        i = 99;
        j = 0;
        while (i >= 0) {//逆序遍历获得最后8条
            if (way[i][15] == '\u0000') {
                i--;
                continue;
            }
            if (j == 8) break;
            k = 0;
            ab.setLength(0);
            while (k < 16) {
                if (way[i][k] != '\u0000') ab.append(way[i][k]);
                k++;
            }
            ab.append(" ");
            ab.append(ls[i]);
            ab.append(" ");
            ab.append(num[i]);
            ans[j++] = ab.toString();//将结果字符串放入字符串数组
            i--;
        }
        i = 7;
        ab.setLength(0);
        while (i >= 0) {
            if (ans[i] == null || ans[i].isEmpty()) {
                i--;
                continue;
            }
            ab.append(ans[i]);
            ab.append("\n");
            i--;
        }
        System.out.print(ab);//打印输出
    }
}

全部评论

相关推荐

08-05 14:06
门头沟学院 Java
驼瑞驰_招募评论官版...:哈哈哈,hr怪实诚的
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
08-07 14:33
点赞 评论 收藏
分享
扉川川:查看图片
投递用友等公司10个岗位
点赞 评论 收藏
分享
07-19 13:28
长沙学院 Java
鸿哥鸿哥:学院(一本),感觉在脱ku子放屁,学院结尾的除了那几家出名的,一律按二本处理
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务