• CF 1140B Good String


    Description

    You have a string ss of length nn consisting of only characters > and <. You may do some operations with this string, for each operation you have to choose some character that still remains in the string. If you choose a character >, the character that comes right after it is deleted (if the character you chose was the last one, nothing happens). If you choose a character <, the character that comes right before it is deleted (if the character you chose was the first one, nothing happens).

    For example, if we choose character > in string > > < >, the string will become to > > >. And if we choose character < in string > <, the string will become to <.

    The string is good if there is a sequence of operations such that after performing it only one character will remain in the string. For example, the strings >, > > are good.

    Before applying the operations, you may remove any number of characters from the given string (possibly none, possibly up to n−1n−1, but not the whole string). You need to calculate the minimum number of characters to be deleted from string ss so that it becomes good.

    Input

    The first line contains one integer tt (1≤t≤1001≤t≤100) – the number of test cases. Each test case is represented by two lines.

    The first line of ii-th test case contains one integer nn (1≤n≤1001≤n≤100) – the length of string ss.

    The second line of ii-th test case contains string ss, consisting of only characters > and <.

    Output

    For each test case print one line.

    For ii-th test case print the minimum number of characters to be deleted from string ss so that it becomes good.

    Example

    Input

    3

    2

    <>

    3

    ><<

    1

    >

    Output

    1

    0

    0

    题目分析

      给一个由'>' '<' 组成的字符串,对于'>'可以删除这个字符右边的字符(想到这里,如果'>'在最左边,岂不是可以一次性把右边所有的全部删除),同样,对于'<'可以删除这个字符左边的字符(如果'<'在最右边,也可以将其左边所有的字符全部删除),题目要求通过上面两种变化使得整个字符串只剩下一个字符'>‘或'<',那么根据上面的推理,我们只需要找到最左边的'>'就可以让其后的所有字符全部消失,那么我们只需要删除在'>’左边的所有'<'即可;同理,我们只需要找到最右边的'<'就可以让这个字符前面的所有字符全部消失,那么我们只需要删除在'<’右边的所有>'即可。

    由于找到最左边的'>'和最右边的'<'都可以完成任务,所以我们需要这两种解法种需要删除的最小字符,然后输出即可。

    代码区

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include <vector>
    using namespace std;
    typedef long long ll;
    const int inf = 0x3f3f3f3f;
    const int Max = 5e5 + 5;
    
    char str[Max];
    
    int main()
    {
    	int t;
    	scanf("%d", &t);
    	while (t--)
    	{
    		int n;
    		scanf("%d", &n);
    		scanf("%s", str);
    		if (n == 1)
    		{
    			printf("0
    ");
    			continue;
    		}
    		int nl = 0, nr = n - 1, x = 0, y = 0;
    		while (str[nl] == '<')nl++, x++;	//找到自左边开始的第一个>号,就可以让这个>号之后的字符全部自动删除,这就是说我们将这个>之前的<全部删除即可
    		while (str[nr] == '>')nr--, y++;	//找到自右边开始的第一个<号,就可以让这个<号之前的字符全部自动删除,这就是说我们将这个<之后的>全部删除即可
    		int m = x < y ? x : y;
    		printf("%d
    ", m);
    	}
    	return 0;
    }
  • 相关阅读:
    如何把pdf文档转化为word
    Win7系统中wmiprvse.exe占用CPU高如何解决
    Visual studio加载项目时报错 尚未配置为Web项目XXXX指定的本地IIS,需要配置虚拟目录。解决办法。
    SQL Server新增用户并控制访问权限设置。
    vs2013 中已经添加了引用,编译还是提示没有添加引用
    vue-cli中引入jquery方法
    vue-vuex安装
    vue2.0项目结构和打包发布
    从(0)新开始vue2.0【安装】
    js判断网络连接情况:navigator.onLine
  • 原文地址:https://www.cnblogs.com/winter-bamboo/p/10634446.html
Copyright © 2020-2023  润新知