Getting NZEC in JAVA!

Hi,

While submitting my code, I continuously keep getting NZEC, but when I’m running the code on my machine, it runs perfectly as per the standard input provided. Can anyone help please? Here’s my code :

package com.sarang.littleelephant.main;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		System.out.println("Input :");
		int numberOfTestCases = 0;
		try {
			numberOfTestCases = Integer.parseInt(br.readLine());
		} catch (NumberFormatException e) {
			e.printStackTrace();
		}
		List<Integer> countList = new ArrayList<Integer>();
		for (int i = 0; i < numberOfTestCases; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			int stringLength = Integer.parseInt(st.nextToken());
			int requiredSubstringCount = Integer.parseInt(st.nextToken());
			int count = 0;
			String inputString = br.readLine();
			if (stringLength == inputString.length()) {
				LuckyStringGenerator lsg = new LuckyStringGenerator();
				Set<String> luckyStringSet = lsg
						.generateLuckyStrings(inputString);
				SubstringGenerator sg = new SubstringGenerator();
				for (String str : luckyStringSet) {
					if (sg.calculateSubstringCount(str) <= requiredSubstringCount) {
						count++;
					}
				}
			} else {
				System.out
						.println("Entered string length is not equal to the length provided earlier");
			}
			countList.add(count);
		}
		System.out.println("Output :");
		for (int count : countList) {
			System.out.println(count);
		}
	}
}

class SubstringGenerator {

	public int calculateSubstringCount(String inputNumberString) {
		Set<String> substringSet = generateSubstrings(inputNumberString);
		return substringSet.size();
	}

	private Set<String> generateSubstrings(String inputNumberString) {
		Set<String> substringSet = new HashSet<String>();

		for (int i = 0; i < inputNumberString.length(); i++) {
			for (int j = i + 1; j <= inputNumberString.length(); j++) {
				substringSet.add(inputNumberString.substring(i, j));
			}
		}
		return substringSet;
	}
}

class LuckyStringGenerator {
	Set<String> luckyStringSet = new HashSet<String>();

	public Set<String> getLuckyStringSet() {
		return luckyStringSet;
	}

	public void setLuckyStringSet(Set<String> luckyStringSet) {
		this.luckyStringSet = luckyStringSet;
	}

	public Set<String> generateLuckyStrings(String inputString) {
		if (inputString.contains("?")) {
			generateLuckyStrings(inputString.replaceFirst("\\?", "4"));
			generateLuckyStrings(inputString.replaceFirst("\\?", "7"));
		} else {
			luckyStringSet.add(inputString);
		}
		return luckyStringSet;
	}

}

Remove package declaration statement.

That got rid of the NZEC. Thanks!

One more thing though, now I’m getting time limit exceeded. Does System.out.println() work here or I have to use printwriter to write the output to Standard output to get this to work? Or my code is just unoptimized?

Avoid using System.out.println(), switch to BufferedWriter or PrintWriter. I don’t know which problem you’re solving so I have no idea if your solution needs more optimizations.

I tried using PrintWriter, but that didn’t help. The same TLE message comes up. And yeah, I’m solving the LUCKFILL problem.