Find all substrings that are palindromes

后端 未结 9 693
伪装坚强ぢ
伪装坚强ぢ 2020-12-07 21:28

If the input is \'abba\' then the possible palindromes are a, b, b, a, bb, abba.
I understand that determining if string is palindrome is easy. It would be like:

9条回答
  •  旧时难觅i
    2020-12-07 21:42

    Code is to find all distinct substrings which are palindrome. Here is the code I tried. It is working fine.

    import java.util.HashSet;
    import java.util.Set;
    
    public class SubstringPalindrome {
    
        public static void main(String[] args) {
            String s = "abba";
            checkPalindrome(s);
    }
    
    public static int checkPalindrome(String s) {
        int L = s.length();
        int counter =0;
        long startTime = System.currentTimeMillis();
        Set hs = new HashSet();
        // add elements to the hash set
        System.out.println("Possible substrings: ");
        for (int i = 0; i < L; ++i) {
          for (int j = 0; j < (L - i); ++j) {
              String subs = s.substring(j, i + j + 1);
                counter++;
                System.out.println(subs);
                if(isPalindrome(subs))
                    hs.add(subs);
          }
        }
        System.out.println("Total possible substrings are "+counter);
        System.out.println("Total palindromic substrings are "+hs.size());
        System.out.println("Possible palindromic substrings: "+hs.toString());
        long endTime = System.currentTimeMillis();
        System.out.println("It took " + (endTime - startTime) + " milliseconds");
        return hs.size();
    }
    public static boolean isPalindrome(String s) {
        if(s.length() == 0 || s.length() ==1)
            return true;
        if(s.charAt(0) ==  s.charAt(s.length()-1))
            return isPalindrome(s.substring(1, s.length()-1));
        return false;
    }
    

    }

    OUTPUT:

    Possible substrings: a b b a ab bb ba abb bba abba

    Total possible substrings are 10

    Total palindromic substrings are 4

    Possible palindromic substrings: [bb, a, b, abba]

    It took 1 milliseconds

提交回复
热议问题