(暴力枚举 水题 长度为3的不同回文子序列)leetcode 1930 ...

打印 上一主题 下一主题

主题 958|帖子 958|积分 2874


关键就是去重,暴力没啥好说明的
  1. class Solution {
  2. public:
  3.   
  4.     int countPalindromicSubsequence(string s) {
  5.         int ans = 0;
  6.         int n = s.size();
  7.         for (char i = 'a';i <= 'z';i++)//穷尽所有字母
  8.         {
  9.             int l= 0;
  10.             int r = n - 1;
  11.             while (l < n && s[l] != i)//找到左边第一个等于s[i]的下标
  12.             {
  13.                 l++;
  14.             }
  15.             while (r > 0 && s[r] != i)//找到右边边第一个等于s[i]的下标
  16.             {
  17.                 r--;
  18.             }
  19.             if (l >= r)//没找到跳过
  20.             {
  21.                 continue;
  22.             }
  23.             //计算回文范围内不重复的字母数量 因为 在"bbcbaba"中,当i枚举到b则l=0,r=5,bbb与bbb算同一个子序列所以,在l和r去重后统计其中的字母数量
  24.             //这里直接把l和r期间的值放入unordered_set在返回长度即可
  25.             unordered_set<int>setf;
  26.             for (int k = l + 1;k < r;k++)
  27.                 setf.insert(s[k]);
  28.             ans += setf.size();
  29.         }
  30.         return ans;
  31.     }
  32. };
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

兜兜零元

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表