/**
 * 1930. Unique Length-3 Palindromic Subsequences
 * https://leetcode.com/problems/unique-length-3-palindromic-subsequences/
 * Difficulty: Medium
 *
 * Given a string s, return the number of unique palindromes of length three that are a
 * subsequence of s.
 *
 * Note that even if there are multiple ways to obtain the same subsequence, it is still
 * only counted once.
 *
 * A palindrome is a string that reads the same forwards and backwards.
 *
 * A subsequence of a string is a new string generated from the original string with some
 * characters (can be none) deleted without changing the relative order of the remaining
 * characters.
 *
 * For example, "ace" is a subsequence of "abcde".
 */

/**
 * @param {string} s
 * @return {number}
 */
var countPalindromicSubsequence = function(s) {
  let result = 0;

  for (let i = 0; i < 26; ++i) {
    const char = String.fromCharCode(i + 97);
    const left = s.indexOf(char);
    const right = s.lastIndexOf(char);
    if (left !== -1 && right !== -1 && left < right) {
      result += new Set(s.substring(left + 1, right)).size;
    }
  }

  return result;
};