【44.10%】【codeforces 723B】Text Document Analysis
time limit per test1 second
memory limit per test256 megabytes
inputstandard input
outputstandard output
Modern text editors usually show some information regarding the document being edited. For example, the number of words, the number of pages, or the number of characters.
In this problem you should implement the similar functionality.
You are given a string which only consists of:
uppercase and lowercase English letters,
underscore symbols (they are used as separators),
parentheses (both opening and closing).
It is guaranteed that each opening parenthesis has a succeeding closing parenthesis. Similarly, each closing parentheses has a preceding opening parentheses matching it. For each pair of matching parentheses there are no other parenthesis between them. In other words, each parenthesis in the string belongs to a matching “opening-closing” pair, and such pairs can’t be nested.
For example, the following string is valid: “Hello_Vasya(and_Petya)__bye(and_OK)”.
Word is a maximal sequence of consecutive letters, i.e. such sequence that the first character to the left and the first character to the right of it is an underscore, a parenthesis, or it just does not exist. For example, the string above consists of seven words: “Hello”, “Vasya”, “and”, “Petya”, “bye”, “and” and “OK”. Write a program that finds:
the length of the longest word outside the parentheses (print 0, if there is no word outside the parentheses),
the number of words inside the parentheses (print 0, if there is no word inside the parentheses).
Input
The first line of the input contains a single integer n (1 ≤ n ≤ 255) — the length of the given string. The second line contains the string consisting of only lowercase and uppercase English letters, parentheses and underscore symbols.
Output
Print two space-separated integers:
the length of the longest word outside the parentheses (print 0, if there is no word outside the parentheses),
the number of words inside the parentheses (print 0, if there is no word inside the parentheses).
Examples
input
37
Hello_Vasya(and_Petya)__bye(and_OK)
output
5 4
input
37
a(b___c)de_f(g)__h__i(j_k_l)m
output
2 6
input
27
(LoooonG)shOrt(LoooonG)
output
5 2
input
5
(_)
output
0 0
Note
In the first sample, the words “Hello”, “Vasya” and “bye” are outside any of the parentheses, and the words “and”, “Petya”, “and” and “OK” are inside. Note, that the word “and” is given twice and you should count it twice in the answer.
【题解】
字符串处理。
要求括号内的单词个数以及括号外最长的单词的长度。
把括号里面的内容提取出来然后用一个”_”代替这个括号和里面的内容;
ere_(dfsfd)df把括号去掉后就变成
ere__df
然后提取出来的是
dfsfd
然后在后面加个_
即
dfsfd;
重复上述操作直到
s存的是括号外的东西
ins存的是括号内的东西;
加上_的目的是区分两个单词;
然后进行所需的操作即可
#include <string>
#include <algorithm>
#include <iostream>
using namespace std;
int n;
string s;
string ins = "";
bool is_zm(char x)
{
if (('a' <= x && x <= 'z') || ('A' <= x && x <= 'Z'))
return true;
return false;
}
int main()
{
//freopen("F:\\rush.txt", "r", stdin);
scanf("%d", &n);
cin >> s;
while (true)
{
bool flag = false;
int len = s.size();
for (int i = 0; i <= len - 1; i++)
if (s[i] == '(')
{
flag = true;
int j = i;
while (s[j] != ')')
j++;
int len1 = j - i + 1;
string temp = s.substr(i + 1, len1 - 2);
s.erase(i, len1);
s.insert(i, "_");
ins += temp;
ins += '_';
break;
}
if (!flag)
break;
}
s = "_" + s + "_";
ins = "_" + ins;
int ma = 0, cntin = 0;
int len = s.size();
int i = 0, j;
while (i <= len - 1)
{
j = i;
if (is_zm(s[i]))
{
while (is_zm(s[j + 1]))
j++;
int len = j - i + 1;
ma = max(len, ma);
}
i = j + 1;
}
len = ins.size();
i = 0;
while (i <= len - 1)
{
j = i;
if (is_zm(ins[i]))
{
cntin++;
while (is_zm(ins[j + 1]))
j++;
}
i = j + 1;
}
cout << ma << " " << cntin << endl;
return 0;
}
【44.10%】【codeforces 723B】Text Document Analysis的更多相关文章
- codeforces 723B:Text Document Analysis
Description Modern text editors usually show some information regarding the document being edited. F ...
- Codefoces 723B Text Document Analysis
B. Text Document Analysis time limit per test:1 second memory limit per test:256 megabytes input:sta ...
- Codeforces Round #375 (Div. 2) B. Text Document Analysis 模拟
B. Text Document Analysis 题目连接: http://codeforces.com/contest/723/problem/B Description Modern text ...
- 【Codeforces 723B】Text Document Analysis 模拟
求括号外最长单词长度,和括号里单词个数. 有限状态自动机处理一下. http://codeforces.com/problemset/problem/723/B Examples input 37_H ...
- Java Web程序设计笔记 • 【第10章 JSTL标签库】
全部章节 >>>> 本章目录 10.1 JSTL 概述 10.1.1 JSTL 简介 10.1.1 JSTL 使用 10.1.2 实践练习 10.2 核心标签库 10.2. ...
- 【2017.10.13 ROS机器人操作系统】ROS系统常用术语及资源
ROS机器人操作系统是一种后操作系统,提供了类似于软件开发中使用到的中间件的功能. ROS: Robot Operating System 机器人操作系统 Package: 功能包 Stack: 功能 ...
- 【 BowWow and the Timetable CodeForces - 1204A 】【思维】
题目链接 可以发现 十进制4 对应 二进制100 十进制16 对应 二进制10000 十进制64 对应 二进制1000000 可以发现每多两个零,4的次幂就增加1. 用string读入题目给定的二进制 ...
- codeforces 723B Text Document Analysis(字符串模拟,)
题目链接:http://codeforces.com/problemset/problem/723/B 题目大意: 输入n,给出n个字符的字符串,字符串由 英文字母(大小写都包括). 下划线'_' . ...
- Text Document Analysis CodeForces - 723B
Modern text editors usually show some information regarding the document being edited. For example, ...
随机推荐
- Android开发经验小知识点
<1> 设置屏幕无标题栏 在AndroidManifest.xml设置: Android:theme="@android:style/Theme.NoTitleBar"
- NPOI根据列索引获取列名
public static string ConvertColumnIndexToColumnName(int index) { index = index + ; ; ]; ; ) { int mo ...
- mahout历史(二)
mahout历史 Apache Mahout起源于2008年,经过两年的发展,2010年4月ApacheMahout最终成为了Apache的顶级项目.Mahout 项目是由 ApacheLucene( ...
- js引入广告服务
var header = []; header[1] = { 'title' : '新浪开始进军微博大战', 'pic' : 'images/header1.png', 'link' : 'http: ...
- EPC-9600I-L开发板使用
1,开发板屏幕,先买的开发板,再买的屏幕,屏幕是7英寸的,与开发板默认烧进的内核不匹配,找板商重新要了匹配的内核,将原内核替换掉,根文件系统和uboot不变,进行重烧. 2,开发板屏幕校准准备 如果校 ...
- vector转数组
vector转数组 由于vector内部的数据是存放在连续的存储空间,vector转数组事实上只需要获取vector中第一个数据的地址和数据的长度即可.如果仅仅是传参,无需任何操作,直接传地址即可,如 ...
- 今天发现里一个非常好用的Listbox自绘类,带不同文字字体和图片,觉得很有必要记下来
代码简写 MyListBox.h class CUseListBox : public CListBox { typedef struct _ListBox_Data { CString strApp ...
- SICP 习题 (2.10)解题总结: 区间除法中除于零的问题
SICP 习题 2.10 要求我们处理区间除法运算中除于零的问题. 题中讲到一个专业程序猿Ben Bitdiddle看了Alyssa的工作后提出了除于零的问题,大家留意一下这个叫Ben的人,后面会不断 ...
- 网页设计实战3 ufo类型的科技网页如何实现
网页设计实战3 ufo类型的科技网页如何实现 一.总结 一句话总结:基础的图片素材就是如何几张图片,这个效果只是通过jquery或者js让那个png图片旋转起来了,如此而已.其实核心就是一个trans ...
- AsyncCallback BeginInvode endinvode 异步调用
下面是搜藏的代码: //首先准备好,要进行C#异步调用的方法(能C#异步调用的,最好不多线程) private string MethodName(int Num, out int Num2) { N ...