使用从各种输入字符串中提取的字符形成字符串。检查错误,提交时会抛出 NZEC 错误

Posted

技术标签:

【中文标题】使用从各种输入字符串中提取的字符形成字符串。检查错误,提交时会抛出 NZEC 错误【英文标题】:Form a string using characters provided taken from various input strings. Check for error, it throws NZEC error on submitting 【发布时间】:2020-01-23 04:37:36 【问题描述】:

在这个问题中,我们需要找到可以使用从输入字符串中提取的字符形成的“codechef”的数量。

第一行是测试用例的数量,下一行是测试用例的数量 输入字符串。输出是一个整数值,表示 可以从给定的“codechef”字符串的数量 字符。

在提交时抛出 NZEC 错误,当我使用 try catch 块来避免它时,它显示错误答案。这是来自 codechef 初学者部分的问题。 Problem Link 我的做法:

    将输入string中的每个字符与频率一起存储到Hashmap中。

    创建一个包含单词"codechef" 中使用的字符的字符数组。另一个整数数组包含这些对应字符的频率,这里我的数组是

    char[ ] c =c,o,d,e,h,f

    int[ ] arr=2,1,1,2,1,1

    我运行一个循环遍历 hashmap 中的每个字符,并删除构词所需的字符数。每一次完整的遍历都会增加一个计数。

实施:

import java.util.*;

import java.lang.*;

import java.io.*;



class Codechef


    public static void main (String[] args) throws java.lang.Exception



        Scanner sc = new Scanner(System.in);

        int T = sc.nextInt();

        while(T-->0)

            int n = sc.nextInt();

            sc.nextLine();

            String s;

            HashMap<Character,Integer> hmap = new HashMap<Character,Integer>();

            for(int i = 0;i < n;i++)

                s = sc.nextLine();

                for(int j = 0;j < s.length();j++)

                    if(hmap.containsKey(s.charAt(j)))

                        hmap.put(s.charAt(j),hmap.get(s.charAt(j))+1);

                    else

                        hmap.put(s.charAt(j),1);
                
            

            /*  for(Map.Entry entry:hmap.entrySet())

                    System.out.println(entry.getKey()+": "+entry.getValue());

                */

            int arr[] = 2,1,1,2,1,1;

            char crr[] = 'c','o','d','e','h','f';

            int count = 0;

            int i = 0;

            boolean flag = true;

            while(flag)

                if(hmap.get(crr[i])>=arr[i])
                    hmap.put(crr[i],hmap.get(crr[i])-arr[i]);

                 else flag = false;

                 if(i==5 && flag)
                 
                     count++;

                     i = 0;

                 

                 else

                 i++;

            

           System.out.println(count);

        

    sc.close();

    


【问题讨论】:

那么你的问题是什么 代码在 codechef 中提交时抛出 NZEC 错误。当我使用 try catch 块时,它会显示错误的答案。 【参考方案1】:

if(hmap.get(crr[i])&gt;=arr[i])

此行包含一个异常,如果 hmap 不包含 crr[i]。 Try catch 在这些站点中总是会给出错误的答案,因为这些站点只检查您的代码生成的答案。

【讨论】:

以上是关于使用从各种输入字符串中提取的字符形成字符串。检查错误,提交时会抛出 NZEC 错误的主要内容,如果未能解决你的问题,请参考以下文章

从日期字符串中提取时间

如何从字符串中提取简单的数字表达式数字?

在js中使用正则表达式从字符串中提取正确的用户名

python 字符串提取信息方法总结

文件输入,试图从字符串中提取 Int(C++)

Java问题:从字符串中提取用空格隔开的数字