天池 在线编程 有效的字符串
生活随笔
收集整理的這篇文章主要介紹了
天池 在线编程 有效的字符串
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
1. 題目
描述
如果字符串的所有字符出現的次數相同,則認為該字符串是有效的。
如果我們可以在字符串的某1個索引處刪除1個字符,并且其余字符出現的次數相同,那么它也是有效的。
給定一個字符串s,判斷它是否有效。如果是,返回YES,否則返回NO。
示例
示例輸入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阿明),一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的天池 在线编程 有效的字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 963. 最小面积矩形
- 下一篇: LintCode 1816. 使结果不超