文章目录

  • 1. 题目
  • 2. 解题

1. 题目

描述
如果字符串的所有字符出现的次数相同,则认为该字符串是有效的。
如果我们可以在字符串的某1个索引处删除1个字符,并且其余字符出现的次数相同,那么它也是有效的。
给定一个字符串s,判断它是否有效。如果是,返回YES,否则返回NO。

1 ≤ |s| ≤ 100000 Each character s[i] ∈{‘a' - ’z'}

示例

示例输入1:aabbcd
示例输出1:NO
解释1:
我们需要删除两个字符,'c'和'd' —> 'aabb' 或者 'a'和'b'  —> 'abcd',使其有效。
而我们只能删除一个字符,所以它是 "NO"。示例输入2:aabbccc
示例输出2:YES
解释2:
除 'c' 出现三次外,其他所有字符都出现两次。
我们可以删除一个 'c' 来获得一个有效的字符串,所以它是 "YES"。

来源:https://tianchi.aliyun.com/oj/141758389886413149/160295184768372894

2. 解题

class Solution {public:/*** @param s: a String* @return: if valid return "YES" else return "NO"*/string isValid(string &s) {// write your code hereunordered_map<char, int> m;for(char c : s)m[c]++;map<int, int> count;for(auto &mi : m)count[mi.second]++;if(count.size() > 2)return "NO";if(count.size() == 1)return "YES";// 有两种数量int a = count.begin()->first, b = count.rbegin()->first;int n1 = count.begin()->second;int n2 = count.rbegin()->second;if(n1 == 1 && a==1)//删除唯一1个出现一次的(个数少的那个)"aabbc"return "YES";if(b-a==1 && n2 ==1)//删除唯一1个出现一次的(个数多的那个),且 两者长度相差1return "YES";return "NO";}
};

50ms C++


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

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

天池 在线编程 有效的字符串相关推荐

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

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

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

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

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

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

  4. 天池 在线编程 最长AB子串(哈希)

    文章目录 1. 题目 2. 解题 1. 题目 描述 给你一个只由字母'A'和'B'组成的字符串s,找一个最长的子串,要求这个子串里面'A'和'B'的数目相等,输出该子串的长度. 这个子串可以为空. s ...

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

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

  6. 天池 在线编程 能否转换

    文章目录 1. 题目 2. 解题 1. 题目 给两个字符串 S 和 T, 判断 S 能不能通过删除一些字母(包括0个)变成 T. 样例1 输入: S = "lintcode" 和 ...

  7. 天池 在线编程 有序队列

    文章目录 1. 题目 2. 解题 1. 题目 给出了一个由小写字母组成的字符串 S. 然后,我们可以进行任意次数的移动. 在每次移动中,我们选择前 K 个字母中的一个(从左侧开始),将其从原位置移除, ...

  8. 天池 在线编程 寻找字母(计数)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个字符串str,返回字符串中字母顺序最大的而且同时在字符串中出现大写和小写的字母. 如果不存在这样的字母,返回'~'. please return ...

  9. 天池 在线编程 布尔表达式求值(栈)

    文章目录 1. 题目 2. 解题 1. 题目 https://tianchi.aliyun.com/oj/245679029019779851/254275128279634588 给定一个字符串代表 ...

最新文章

  1. 拆解交易系统--模块拆解与服务化
  2. 基于NVIDIA显卡的硬编解码的一点心得 (完结)
  3. jQuery-强大的jQuery选择器 (详解)
  4. 如何在 Eclipse 中使用命令行
  5. java map的理解_java中的hashmap理解
  6. 追加的英文计算机,Latex同时添加中英文摘要
  7. Python使用本地代理 proxy
  8. 【matlab】画正六边形、矩形、圆形点阵
  9. ospf-3型和5型汇总
  10. 2021-05-15 Nginx面试题
  11. tarjan算法 转载
  12. ASRT语音识别asrserver http协议测试专用客户端
  13. dhtmlxgantt pro 7.1.10 | dhtmlxgantt 专业版 7.1.10
  14. java后台解析json并保存到数据库_java解析json格式文件,再保存在数据库怎么做?...
  15. tipask 3.5问答系统部署说明,超详细命令行部署,挂载iso,可内网使用。
  16. XDOJ1184 - 贪心的小白羊
  17. infercnv报错Error in base::rowMeans(x, na.rm = na.rm, dims = dims, ...) : ‘x‘ must be an array of a
  18. 激光雷达核心技术及行业格局梳理
  19. dns联通服务器未响应,DNS解析Bug?网曝辽宁联通用户无法登录工信部投诉平台
  20. 【初等概率论】 04

热门文章

  1. Node.js中事件的循环
  2. 【R】语言第二课----- 变量的使用方法
  3. java 自动装拆箱
  4. [c++]代理对象模式
  5. 怎么用计算机画正弦函数图像,几何画板如何绘制正弦函数图象
  6. gvim for php,转 : Gvim建立IDE编程环境 (Windows篇)
  7. 关于SQL数据库中cross join 和inner join用法上的区别?
  8. 01.轮播图之三 : collectionView 轮播
  9. ThinkPHP(3.2)搭建简单留言板项目
  10. InterDev 调试错误信息: Unable to set server into correct debugging state automatically....的解决办法...