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;
}
}