2
問題 - 給出n個字符串w1,w2,......,wn。設Si表示通過考慮字符串wi的所有唯一子串形成的字符串集合。子字符串被定義爲字符串中一個或多個字符的連續序列。有關子字符串的更多信息可以在這裏找到。令S = {S1 U S2 U ... Sn} .ie S是考慮所有集合中的所有唯一字符串形成的一組字符串,S1,S2,...... Sn將多個字符串的不同子串添加到Treeset中
我的方法 - I我正在使用TreeSet並直接填充它,而不是創建列表,集合和排序列表。
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int cases = Integer.parseInt(in.nextLine());
String[] a = new String[cases];
int i, c;
//Adding directly to the Set prevents a larger list because you remove the duplicates
Set<String> set = new TreeSet<String>();
for(i = 0; i < cases; i++)
{
a[i] = in.nextLine();
for (c = 0; c < a[i].length(); c++)
{
for (i = 1; i <= a[i].length() - c; i++)
{
String sub = a[i].substring(c, c + i);
set.add(sub);
}
}
}
}
輸入:
2
aab
aac
我得到一個運行時錯誤:
Exception in thread "main" java.lang.NullPointerException
at Solution.main(Solution.java:32)
任何人都可以解釋我爲什麼我收到此運行時錯誤,我應該做些什麼來避免這種空指針異常,爲什麼這首先發生?請幫助我,如果你可以
你可能想檢查最後一次迭代i'i' – silentprogrammer
會發生什麼,i = a [i] .length() - c的值,它有什麼問題? @singhakash – coder101
在你初始化'a [0]'的最外層循環的第一次迭代中,你在這裏訪問'a [1] .length()'的最內循環'a [1]'沒有被初始化給你空指針。爲什麼你有相同的變量名稱嵌套循環 – silentprogrammer