文章
11
粉丝
27
获赞
19
访问
1.2k
//2016-平衡字符串
#include<bits/stdc++.h>
using namespace std;
//正确答案
#include <iostream>
#include <vector>
#include <string>
#include <cmath>
#include <unordered_map>
using namespace std;
int main() {
int n, m;
string s;
while (cin >> n >> m) {
cin >> s;
char c = s[0];
unordered_map<int, int> map;
int a = 0, b = 0;
for (int i = 0; i < s.length(); i++) {
if (s[i] == c) {
a++;
} else {
b++;
}
int t = a - b;
//map和set两种容器的底层结构都是红黑树,所以容器中不会出现相同的元素,
//因此count()的结果只能为0和1,
//可以以此来判断键值元素是否存在(当然也可以使用find()方法判断键值是否存在)。
if (map.count(t) == 0) {
map[t] = i; //问题1:如果有多个i满足等于t怎么办,为什么只记录最小的i
}
}
//回答问题1:为什么只记录最小的i
//看以下例子,nums[0]和nums[2]都是1,对于string[9],(倒数第二个b)
//其nums[9]=4,0-9这一段和2-9这一段都满足qi=3阶...
登录后发布评论
暂无评论,来抢沙发