题目链接
思路:看了一下大佬的方法,真的是惊叹不已呀,O(n)就可以出结果了。。。
想想看把哪些位置的1变为0不会影响LIS呢,其实当某一位为1的时候只要它后面的1的个数大于0的个数的话就不会影响了,所以我们从后往前枚举。
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+1;
char s[maxn];
int main()
{
scanf("%s",s);
int len=strlen(s),cnt=0;
for(int i=len-1;i>=0;--i)
{
if(s[i]=='0') cnt++;
else if(s[i]=='1'&&cnt>0) cnt--;
else if(s[i]=='1'&&cnt==0) s[i]='0';
}
printf("%s\n",s);
}
qq_42479630
发布了138 篇原创文章 · 获赞 0 · 访问量 4677
私信
关注