B. Good String---简单思维题--Educational Codeforces Round 62 (Rated for Div. 2)

博客围绕Good String问题展开,给定尖括号序列,可对'>'删右边字符、'<'删左边字符,good string是单一形态串。可先删部分字符,求最少删字符数使序列操作后成good string,分析了无需删字符情况并给出AC代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Good String

time limit per test 1 second
memory limit per test 256 megabytes

题目链接http://codeforces.com/problemset/problem/1140/B

在这里插入图片描述
在这里插入图片描述


emmm,题目大意:给你一个尖括号序列,你可以进行操作,你可以选择其中一个,假如选择’>‘那么你可以删去它右边的一个字符,’<'则是左边的。假设一个good string 是一个单一形态的串。在进行选择之前你可以删去一些字符。问你最少删去多少个字符可使得给定的序列在操作之后为good string。

首先我们考虑什么情况下不要删字符:
1.当第一个字符为‘>’的时候,我们可以将后面的序列全部删除所以不需要删除
2.当最后一个字符为‘<’的时候同1理

那么我们所需要的就是将序列变成首字符为‘>’ 或尾字符为‘<’那么就只需要将第一个‘>’之前的全部删掉,或最后一个‘<’之后的全删的就行了。

以下是AC代码:

#include <bits/stdc++.h>
using namespace std;
char s[150];
int main()
{
	int t,n;
	scanf ("%d",&t);
	while (t--){
		scanf ("%d",&n);
		scanf ("%s",s+1);
		if (n==1) printf ("0\n");
		else if (s[1]=='>' || s[n]=='<') printf ("0\n");
		else {
			int head=1,num=0;
			while (s[head]=='<') head++;
			head--;
			int tail=n;
			while (s[tail]=='>') tail--,num++;
			if (head==n ||num==n) printf ("0\n");
			else printf ("%d\n",min(head,num));
		}
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值