参加微软在线测试的一道题目

题目 : BeautifulString

时间限制:10000ms

单点时限:1000ms

内存限制:256MB

描述

We say a stringis beautiful if it has the equal amount of 3 or more continuous letters (inincreasing order.)

Here are someexample of valid beautiful strings: "abc", "cde","aabbcc", "aaabbbccc".

Here are someexample of invalid beautiful strings: "abd", "cba","aabbc", "zab".

Given a stringof alphabets containing only lowercase alphabets (a-z), output "YES"if the string contains a beautiful sub-string, otherwise output "NO".

输入

The first linecontains an integer number between 1 and 10, indicating how many test cases arefollowed.

For each testcase: First line is the number of letters in the string; Second line is thestring. String length is less than 10MB.

输出

For each testcase, output a single line "YES"/"NO" to tell if the stringcontains a beautiful sub-string.

提示

Huge input. SlowIO method such as Scanner in Java may get TLE.

样例输入

4

3

abc

4

aaab

6

abccde

3

abb

样例输出

YES

NO

YES

NO

我提交并AC的解答为:

#include<iostream>

#include<stdio.h>

using namespace std;

int main()

{

int i;

int T;

int N;

scanf("%d",&T);

while(T--)

{

scanf("%d",&N);

getchar();

int cnt[3], loc = 0;

char ch, pre = ‘\0‘;

bool flag = false;

//memset(cnt,0,sizeof(cnt));

for(i = 0; i < N; i++)

{

scanf("%c", &ch);

//if(ch < ‘a‘ || ch > ‘z‘) { i--; continue; }

if(flag) { continue; }

if(ch == pre){ cnt[loc]++; }

else{

if(loc == 2 && cnt[0] >= cnt[1] && cnt[2] >= cnt[1]){

flag = true;

continue;

}

else if(loc == 2 && (pre + 1 == ch)){

cnt[0] = cnt[1], cnt[1] = cnt[2];

cnt[2] = 1;

}

else if(pre + 1 == ch){

cnt[++loc] = 1;

}

else{

loc = 0;

cnt[loc] = 1;

}

pre = ch;

}

}

if(loc == 2 && cnt[0] >= cnt[1] && cnt[2] >= cnt[1]) { flag = true; }

if(flag) { printf("YES\n"); }

else { printf("NO\n"); }

}//end while

return 0;

}

基本思路是:要满足形成beautiful string,必须由连续的三个字母组成,且中间字母的数量要小于前后字母的数量,所以只要找出这个组合就行了。

时间: 2024-10-13 05:19:39

参加微软在线测试的一道题目的相关文章

由一道题目引出的java多态

某次逛论坛时发现一个非常有意思的题目,如下: class A<B> { public String show(A obj) { return ("A and A"); } public String show(B obj) { return ("A and B"); } } class B extends A { public String show(B obj) { return ("B and B"); } public Stri

Unity跟IOS原生开发项目融合记录参加微软打造开发者社会生态圈线下会议

昨天很荣幸受邀参加微软第一届为打造微软技术开发者社区生态圈现在会议,我是一名从.net转到unity的游戏开发者,也算半个微软技术圈的人,一直对微软技术比较钟爱,因为这个,我也”唆使”我的老婆成为一名.net开发者.参会的有来自各个技术社区和产业界的朋友.不但有.NET社区的,还有google.java.nodejs.linux等等开源社会的专家或者社区组织者共20余人.这届会议不同于以往只是主办人读PPT的流程,下面的参会者聆听而已,这次更多的是参会人员的发言和交流. 这次会议是微软走向开源,

分析函数之初体验(一)——一道题目产生的兴趣

本来公司说是要做BI的,后来被改成了一个报表系统,失去了体验BI的机会,有些不爽. 报表系统是由顾问公司做,顾问公司说要看我们的SQL水平,给出了一份试题,其中有一题是这样的: t_hykbgjl 记录了会员卡每次的发生额(nFse) .余额(nYe)及卡号(sKH),对于同一会员卡,上一条记录的余额加上本次发生额应等于本次的余额.否则帐将不平.记录号为sJlbh,请写出列出所有会员卡不平帐记录的Sql语句. 从题目上分析,需要把上一行的余额拿下来进能计算,如果采用传统写法,可能需要很多的嵌套,

拉勾上的一道题目

在拉勾上看到一道题目,或许有很多精妙的做法,欢迎讨论,集思广益.题目如下: FizzBuzzWhizz你是一名体育老师,在某次课距离下课还有五分钟时,你决定搞一个游戏.此时有100名学生在上课.游戏的规则是: 1. 你首先说出三个不同的特殊数,要求必须是个位数,比如3.5.7. 2. 让所有学生拍成一队,然后按顺序报数. 3. 学生报数时,如果所报数字是第一个特殊数(3)的倍数,那么不能说该数字,而要说Fizz:如果所报数字是第二个特殊数(5)的倍数,那么要说Buzz:如果所报数字是第三个特殊数

2018微软实习笔试一道dp题目总结

题意大概是说在一维数轴上起点和终点的距离是d,现在我们要从起点走到终点.每走一个单位长度消耗一个单位能量,初始时有K单位能量.同时在起点和终点之间分布一些加油站a1,a2,...an,给你加油站数量.位置以及每个加油站储油量,问你要走到终点,至少需要停在几个加油站加油. 类似于http://www.cnblogs.com/wangyiming/p/7193446.html这道题,直接用dp求解"到达一定距离至少停下来几次"的原问题并不方便,于是转换思路,采用一种"对偶&quo

从一道题目看类加载

有一道非常经典的题目,如果对虚拟机加载类的过程不熟悉,很容易就答错,题目如下: public class Singleton { public static Singleton instance = new Singleton(); public static int a; public static int b = 0; private Singleton() { a++; b++; } public static Singleton getInstance() { return instan

参加微软Ignite大会有感

很有幸作为MVP参加了本次微软中国的年度技术大会(Ignite).跳出技术领域,这次会议给我最大的感受是态度.这几年不论是开源现有技术,还是黑科技的发布,都给人感觉微软在逐渐变得cool,但是cool不一定就会流行不一定会成功.还要有"态度",本次大会依然延续了这个态度,开会的目的不再是展示肌肉更多的是给大家提供服务,不断展示的就是我们能让所有人变得更好,是合作不是指导. 大会举办地点在国家会议中心,对于很多IT人员来说要比去年的九华山庄近得多,人性化的节能减排啊: 大会开模式还是不错

中国核心领导人将参加微软联合主持的科技论坛

纽约时报今天报道,中国国家领导人习大大计划出席在西雅图举办的技术论坛. 参加本次活动的均为美国顶尖科技公司,包括时时彩.Facebook.IBM.谷歌和Uber.有趣的是,这个论坛是由微软联合主持的.习大大在会见美国总统奥巴马之前,还可能会与微软联合创始人比尔·盖茨一起,在他的麦地那庄园共进晚宴. 这真是令人期待,希望本次活动能有好消息传出.

动态规划学习中的一道题目

记得初中时候的一篇文章说,做学问,必须要有学和问两个方面. 做了一些动态规划题目之后偶然看到这个介绍动态规划的文章.然后遇见第一道题目就卡壳. 经过反思文章以及自己思考,总算对题目有了一些理解.下面分享给大家,初学者们看到这个题目不至于太过茫然——像我一样. 工厂生产某种产品,每单位(千件)的成本为1(千元),每次开工的固定成本为3(千元),工厂每季度的最大生产能力为6(千件).经调查,市场对该产品的需求量第一.二.三.四季度分别为        2,3,2,4(千件).如果工厂在第一.二季度将