查找字符串的字词对的Nullpointer异常错误

时间:2019-05-28 05:38:36

标签: java

  • 我正在尝试检查和计数输入字符串的每个子字符串的字谜对
  • 例如,如果输入字符串是mom,则字谜对为m,m和mo,om
  • 在程序中,我提取了子字符串并存储在数组中
  • 然后将每对子字符串数组转换为哈希表以进行比较
  • 最后与哈希表元素进行比较以找出字谜
  • 但是,将每对数组元素用于哈希表转换以比较字符串会引发空点异常错误
  • 我对此问题进行了尝试和研究,但这个错误让我震惊
  • 你们能帮我解决您的建议吗 -提供以下代码:

    import java.io.*;
    import java.math.*;
    import java.security.*;
    import java.text.*;
    import java.util.*;
    import java.util.concurrent.*;
    import java.util.regex.*;
    
    public class Solution {
    
        // Complete the sherlockAndAnagrams function below.
        static int sherlockAndAnagrams(String s) {
            //Hashtable<Integer, String>sHash = new Hashtable<Integer, String>();
            //Hashtable<Integer, String>sHash1 = new Hashtable<Integer, String>();
            //Hashtable<Integer, String>sHash2 = new Hashtable<Integer, String>();
            String[] sArray = new String[100];
            int index = 0, count = 0;
            for(int i=0; i<s.length(); i++){
                for(int j=i+1; j<=s.length(); j++){
                    sArray[index] = s.substring(i,j);
                    index++;
                    System.out.println(s.substring(i,j));
                    System.out.println(Arrays.toString(sArray));
                }
            }
            for(int i=0; i<sArray.length; i++){
                for(int j=i; j<sArray.length; j++){
                    //char[] sArray1 = sArray[i].toCharArray();
                    //char[] sArray2 = sArray[j].toCharArray();
                    //System.out.println(sArray1);
                    //System.out.println(sArray2);
                    int index_str = 0;
                    Hashtable<Integer, String>sHash1 = new Hashtable<Integer, String>();
                    Hashtable<Integer, String>sHash2 = new Hashtable<Integer, String>();
                    sHash1.put(index_str, sArray[i]);
                    sHash2.put(index_str, sArray[j]); index_str++;
                    if(sHash1.equals(sHash2)){
                        count++;
                    }
                }
            }
            //char sArray1[]=sHash.toString.toCharArray();
            //System.out.println(sArray1);
            /*for(int i=0; i<s.length()-1; i++){
                for(int j=i+1; j<s.length(); j++){
                    if(i != j){
                     char sArray1[] = sHash[i].toString.toCharArray   
                    }
                }
            }*/
            //System.out.println(sHash);
            return count;
        }
    
        private static final Scanner scanner = new Scanner(System.in);
    
        public static void main(String[] args) throws IOException {
            BufferedWriter bufferedWriter  = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
    
            int q = scanner.nextInt();
            scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
    
            for (int qItr = 0; qItr < q; qItr++) {
                String s = scanner.nextLine();
    
                int result = sherlockAndAnagrams(s);
    
                bufferedWriter.write(String.valueOf(result));
                bufferedWriter.newLine();
            }
    
            bufferedWriter.close();
    
            scanner.close();
        }
    }
    

0 个答案:

没有答案