bnnpuu level
获赞
131
粉丝
1
关注
3
看过 TA
7
门头沟学院
2023
C++
IP属地:江西
暂未填写个人简介
私信
关注
2022-04-24 19:03
门头沟学院 C++
0 点赞 评论 收藏
分享
2020-02-09 10:59
已编辑
门头沟学院 C++
用尺取法维护一个区间改变k个字符的区间 #include <iostream> #include <cstring> #include <cstdio> #include <algorithm> using namespace std; string s; int n, k; int deal(char a, char a1)// change a to a1 { int L = 0, R = 0, change = 0, ans = 1; for (int i = 0; i < n; i++){ i...
shareone2:楼上对于代码的问题,我可能懂一点(不保证对,我也挺菜的)。为什么要while (l <= r && s[l] != a) l++;呢?因为此时的change使用的次数已经达到k了,那么下一个数字是要变的数字a。此时需要在这个进行判断,然后如果在这个区间最左端的数字就是a1,那么那么可以无条件缩小区间,反正不会影响change(此时的change就是k),于是乎就有了这句。但是如果区间最左端数字是a的话就不可以(因为change已经等于k了)。而后面的l++; r++;这句则是在change不变的原则下进行的区间平移。因为经过上面的while语句后可以保证区间最左端的数字一定是a,而区间最右端的数字也一定是a。这时,l++(相当于change--),r++(相当于change++),change还是等于k(这应该就是一楼问的问题,change实际上在等于k后一直都是等于k的)。
0 点赞 评论 收藏
分享
关注他的用户也关注了:
牛客网
牛客企业服务