文章目录

  • 1. 题目
  • 2. 解题

1. 题目

描述
给你一个只由字母’A’和’B’组成的字符串s,找一个最长的子串,要求这个子串里面’A’和’B’的数目相等,输出该子串的长度。

这个子串可以为空。
s的长度n满足 2<=n<=1000000。示例
样例1
输入: s = "ABAAABBBA"
输出: 8
解释:
子串 s[0,7] 和子串 s[1,8] 满足条件,长度为 8。样例2
输入: s = "AAAAAA"
输出: 0
解释:
s 中除了空字串,不存在 'A' 和 'B' 数目相等的子串。

https://tianchi.aliyun.com/oj/496421179568411239/552131449257661029

2. 解题

  • 遇到 A +1, 遇到 B -1,同时将没有出现过的值存入哈希,若哈希中存在某一值,则中间的AB个数相等
class Solution {public:/*** @param S: a String consists of a and b* @return: the longest of the longest string that meets the condition*/int getAns(string &s) {// Write your code hereunordered_map<int,int> m;m[0] = -1;int sum = 0, ans = 0;for(int i = 0; i < s.size(); ++i){if(s[i] =='A')sum++;elsesum--;if(m.find(sum) != m.end())ans = max(ans, i-m[sum]);elsem[sum] = i;}return ans;}
};

我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

天池 在线编程 最长AB子串(哈希)相关推荐

  1. 【组队学习】【34期】阿里云天池在线编程训练营

    阿里云天池在线编程训练营 航路开辟者:陈信达.杨世超.赵子一.马燕鹏 领航员:武帅.初晓宇.叶前坤.邱广坤.朱松青 航海士:宁彦吉.肖桐.汪超.陈信达.杨世超.赵子一.武帅.初晓宇.叶前坤.邱广坤.朱 ...

  2. 【LintCode】算法题 1443. 最长AB子串

    描述 给你一个只由字母'A'和'B'组成的字符串s,找一个最长的子串,要求这个子串里面'A'和'B'的数目相等,输出该子串的长度. 这个子串可以为空. s的长度n满足 2<=n<=1000 ...

  3. 天池 在线编程 最频繁出现的子串(字符串哈希)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个字符串,我们想知道满足以下两个条件的子串最多出现了多少次: 子串的长度在之间 [minLength, maxLength] 子串的字符种类不超过 ...

  4. 天池 在线编程 回文子串(区间动态规划)

    文章目录 1. 题目 2. 解题 1. 题目 描述 小明喜欢玩文字游戏,今天他希望在一个字符串的子串中找到回文串. 回文串是从左往右和从右往左读相同的字符串,例如121和tacocat.子串是一个字符 ...

  5. 天池 在线编程 删除字符(单调栈)

    文章目录 1. 题目 2. 解题 1. 题目 描述 给定一个字符串str,现在要对该字符串进行删除操作, 保留字符串中的 k 个字符且相对位置不变,并且使它的字典序最小,返回这个子串. 示例 例1: ...

  6. 天池 在线编程 输入流

    文章目录 1. 题目 2. 解题 1. 题目 描述 给出两个输入流 inputA 和 inputB(包含退格符), 如果两个输入流最后的结果相等,输出 YES,否则输出 NO. 输入字符只包括小写字母 ...

  7. 天池 在线编程 区间合并(字符串)

    文章目录 1. 题目 2. 解题 1. 题目 描述 现在给你两个字符串区间(按字典顺序), 请你判断两个区间是否可以合并. 字符串区间[a, b),包括所有以a开头的字符串. 例如,区间[a, b)和 ...

  8. 天池 在线编程 双向取数(博弈DP)

    文章目录 1. 题目 2. 解题 1. 题目 https://tianchi.aliyun.com/oj/245679029019779851/254275128279634585 有一个长度为n的数 ...

  9. 天池 在线编程 拿走瓶子(区间DP)

    文章目录 1. 题目 2. 解题 1. 题目 描述 有n个瓶子排成一列,用arr表示. 你每次可以选择能够形成回文连续子串的瓶子拿走,剩下的瓶子拼接在一起. 返回你能拿走所有的瓶子的最小次数. n&l ...

最新文章

  1. 理解 Delphi 的类(十) - 深入方法[23] - 重载
  2. 自动化WiFI钓鱼工具——WiFiPhisher源码解读
  3. keras保存和载入模型继续训练
  4. Scala入门到精通——第七节:类和对象(二)
  5. 全志A33-USB虚拟网卡的配置与使用
  6. php声波模拟开门,关于 php使用扩展控制树莓派io 驱动超声波测距
  7. xml模块、项目开发过程
  8. C++ tbb::atomic<bool> 声明、读取load、重新赋值store
  9. Codeforces-691C-Exponential notation(模拟)Java 以及输入的处理
  10. 论文查重:利用Python查找两个Word文件的相同内容
  11. mysql front新建数据库_简述MySQL-Front数据库的具体操作
  12. 操作系统——实时操作系统和分时操作系统
  13. Java英语单词(5000个)
  14. 二维码生成软件如何生成汉信码
  15. 微信没有回车键怎么换行_怎么换行-回答 | 为什么苹果的微信没有换行键,想换行怎么办?...
  16. java 四舍六入五成双_显示格式的四舍六入五成双
  17. 【Java中继承总结与练习 】
  18. 网易视频云:浅谈视频通信技术的发展
  19. java 获取指定日期下月的第一天
  20. 格凌科技浅谈数据中心的PUE值

热门文章

  1. python中什么是关键字参数_如何使用python语言中函数的关键字参数的用法
  2. 苹果应用上架,图片的要求(2017年4月27日)
  3. c++远征之多态篇——异常处理
  4. kali linux 2.0 ssh,Kali 2.0使用SSH进行远程登录(示例代码)
  5. 以下题目需要当场编写实现,,答案自己写
  6. 最全android Demo
  7. 201671010144 2016-2017 《java程序设计》--对象与类!
  8. Android中的Handler的具体用法
  9. Oracle 多表 连接 顺序 与 性能关系 测试
  10. Python核心教程(第二版)读书笔记(三)