Problem

Count Palindromic Concatenation Pairs

Learn this problem
Salesforce logoSalesforceOA
See Salesforce hiring insights

Problem statement

You are given a list of lowercase strings words.

Count the number of index pairs (i, j) such that i < j and some permutation of the concatenation words[i] + words[j] can form a palindrome.

A string can be rearranged into a palindrome if at most one character has an odd frequency.

Function

countPalindromicConcatenationPairs(words: String[]) → long

Examples

Example 1

words = ["ab","ba","abc","c"]return = 3

The valid pairs are (0,1), (0,2), and (1,2).

Example 2

words = ["aa","bb","ab"]return = 1

Only "aa" + "bb" can be rearranged into a palindrome.

Constraints

  • 1 <= words.length
  • Total length of all strings is at most 3 * 10^5.
  • words[i] contains only lowercase English letters.

More Salesforce problems

drafts saved locally
public long countPalindromicConcatenationPairs(String[] words) {
  // write your code here
}
words["ab","ba","abc","c"]
expected3
checking account