蓝桥杯填充(贪心)

1<=n<=1e6

思路:因为题目要求字串不重叠,所以当我们遍历到某一个字符时可以将它先与前面的比较,如果前面的字符没有配对且与它相等,那么匹配,否则就继续向下遍历,如果遍历到?,其实就是少了判断相等的步骤。

每次只看前面的,因为是连续且不重叠子串,所以如果前面的字符与 该字符不匹配,那么它一定不能与后面的字符匹配。而且这样匹配也不会影响后面字符的匹配。

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	string s;
	cin>>s;
	int n=s.size(),ans=0;
	vector<int> v(n);
    for(int i=0;i<n;i++)
	{
		if(i==0) continue;
		if(i>0)
		{
			if(!v[i-1])
			{
				if(s[i]==s[i-1]||s[i]=='?'||s[i-1]=='?') 
				    {
				    	v[i]=1;
				    	v[i-1]=1;
				    	ans++;
					} 
			}
		}
	}
	cout<<ans<<endl;
	return 0;
 } 
相关推荐
写写闲篇儿2 小时前
微软面试之白板做题
面试·职场和发展
LYFlied4 小时前
【每日算法】LeetCode 17. 电话号码的字母组合
前端·算法·leetcode·面试·职场和发展
yaoh.wang7 小时前
力扣(LeetCode) 27: 移除元素 - 解法思路
python·程序人生·算法·leetcode·面试·职场和发展·双指针
牛客企业服务8 小时前
AI面试监考:破解在线面试作弊难题
人工智能·面试·职场和发展
LYFlied9 小时前
【每日算法】LeetCode 46. 全排列
前端·算法·leetcode·面试·职场和发展
LYFlied11 小时前
【每日算法】131. 分割回文串
前端·数据结构·算法·leetcode·面试·职场和发展
LYFlied13 小时前
【每日算法】LeetCode 78. 子集
数据结构·算法·leetcode·面试·职场和发展
LinHenrY122713 小时前
初识C语言(编译和链接)
c语言·开发语言·蓝桥杯
_OP_CHEN13 小时前
【算法基础篇】(三十五)图论基础之最小生成树:从原理到实战,彻底吃透 Prim 与 Kruskal 算法
算法·蓝桥杯·图论·最小生成树·kruskal算法·prim算法·acm/icpc
LYFlied13 小时前
【算法解题模板】-【回溯】----“试错式”问题解决利器
前端·数据结构·算法·leetcode·面试·职场和发展