zoukankan      html  css  js  c++  java
  • leetcode1542 找出最长的超赞子字符串

    思路:

    整体思路是从前向后扫描,用前缀和思想和map(hashmap)来查找符合要求的最长子串。具体实现的时候使用了二进制位状态压缩技术来表示前缀和。

    实现:

     1 class Solution
     2 {
     3 public:
     4     int longestAwesome(string s)
     5     {
     6         int n = s.length(), cnt = 0, ans = 0;
     7         unordered_map<int, int> mp;
     8         mp[0] = -1;
     9         for (int i = 0; i < n; i++)
    10         {
    11             int t = s[i] - '0';
    12             cnt ^= 1 << t;
    13             if (mp.count(cnt))
    14             {
    15                 int pos = mp[cnt];
    16                 ans = max(ans, i - pos);
    17             }
    18             for (int j = 0; j < 10; j++)
    19             {
    20                 t = 1 << j;
    21                 int need = cnt ^ t;
    22                 if (mp.count(need))
    23                 {
    24                     int pos = mp[need];
    25                     ans = max(ans, i - pos);
    26                 }
    27             }
    28             if (!mp.count(cnt)) mp[cnt] = i;
    29         }
    30         return ans;
    31     }
    32 };
  • 相关阅读:
    Domino
    tomcat 部署 外网访问
    市场4
    android 源码下载编译
    SSIS
    代码审查工具
    mfc 常用控件
    屏蔽home
    MFC BEGIN_MESSAGE_MAP()
    社交产品
  • 原文地址:https://www.cnblogs.com/wangyiming/p/14402488.html
Copyright © 2011-2022 走看看