(原创)Codeforces Round #550 (Div. 3) A Diverse Strings
1 second
256 megabytes
standard input
standard output
A string is called diverse if it contains consecutive (adjacent) letters of the Latin alphabet and each letter occurs exactly once. For example, the following strings are diverse: "fced", "xyz", "r" and "dabcef". The following string are not diverse: "az", "aa", "bad" and "babc". Note that the letters 'a' and 'z' are not adjacent.
Formally, consider positions of all letters in the string in the alphabet. These positions should form contiguous segment, i.e. they should come one by one without any gaps.
You are given a sequence of strings. For each string, if it is diverse, print "Yes". Otherwise, print "No".
The first line contains integer nn (1≤n≤1001≤n≤100), denoting the number of strings to process. The following nn lines contains strings, one string per line. Each string contains only lowercase Latin letters, its length is between 11 and 100100, inclusive.
Print nn lines, one line per a string in the input. The line should contain "Yes" if the corresponding string is diverse and "No" if the corresponding string is not diverse. You can print each letter in any case (upper or lower). For example, "YeS", "no" and "yES" are all acceptable.
8
fced
xyz
r
dabcef
az
aa
bad
babc
Yes
Yes
Yes
Yes
No
No
No
No 解题思路:这道题就是给你一串字符串,判断其是否符合题意,如果它是连续且不出现重复则符合,输出Yes,否则输出No;
解法一:直接对字符串排序;
代码如下:
#include<iostream>
#include<map>
#include<algorithm>
#include<string.h>
using namespace std; int n ;
string s ;
int flag1 = ;
int flag2 = ;
int a[];
int count1 = ;
map<char,int>mp; //用于记录是否有重复的字母;
int main()
{
cin>>n;
while(n--)
{
flag1 = ; //flag1是用于标记是否有重复的,现在假设没有重复的,置flag=1;
flag2 = ; //flag2是用于记录是否连续;
cin>>s;
sort(s.begin(),s.end()); //将字符串排序; for(int i = ; i < s.size();i++)
{
mp[s[i]]++; //看是否有重复的;先记录下每个字母的个数;
}
for(int i = 'A'-'';i <= 'Z'-'';i++)
{
if(mp[i]>) //字母有重复;
{
flag1 = ; //将flag1 置为0;
mp[i] = ;
} }
for(int i = ; i < s.size() ;i++)
{
if((s[i]-'')!=(s[i-]-'')+) //判断是否连续;如果不连续就是相邻的Ascall码相差不为1;
{
flag2 = ; //不连续则将flag2 置为0;
}
}
if(flag1==||flag2==) //如果字母重复或者字母不连续;
{
cout<<"No"<<endl;
}else
cout<<"Yes"<<endl;
}
return ;
}
解法二:不利用头文件带的函数,将字符串转为数字再进行数字的排序再存进另一个字符串;这个是刚刚比赛的时候写的,忘记了字符串可以直接排序,所以在思考字符串怎么排序;
就想到可以先转为数字排序再放进另一个字符串;
代码如下:
#include<iostream>
#include<map>
#include<algorithm>
#include<string.h>
using namespace std; int n ;
string s ;
map<char,int>mp;
int flag1 = ;
int flag2 = ;
int a[];
int count1 = ;
string t;
int main()
{
cin>>n;
while(n--)
{
count1 = ;
flag1 = ; //用于标记是否重复;
flag2 = ; //用于标记是否连续;
cin>>s;
for(int i = ; i < s.size();i++)
{
a[i] = s[i]-''; //将字符串每位转为数字;
count1++; //并计算该数字数组的长度;
}
sort(a,a+count1); //对数字进行排序;
t = "";
for(int i = ; i < count1 ;i++)
{
t.push_back(a[i]+''); //将数字转为字符放入另一个字符串;
}
for(int i = ; i < s.size();i++)
{
mp[s[i]]++; //记录每个字母出现的个数;
}
for(int i = 'A'-'';i <= 'Z'-'';i++)
{
if(mp[i]>) //如果出现重复;
{
flag1 = ; //将flag1 置为0 ;
mp[i] = ;
} }
for(int i = ; i < t.size() ;i++)
{
if((t[i]-'')!=(t[i-]-'')+) //如果不连续;就是相邻的Ascall码相差不为1;
{
flag2 = ; //将flag2 置为0;
}
}
if(flag1==||flag2==) //如果有重复或者不连续;
{
cout<<"No"<<endl;
}else
cout<<"Yes"<<endl;
}
return ;
}
(原创)Codeforces Round #550 (Div. 3) A Diverse Strings的更多相关文章
- Codeforces Round #275 (Div. 2) C - Diverse Permutation (构造)
题目链接:Codeforces Round #275 (Div. 2) C - Diverse Permutation 题意:一串排列1~n.求一个序列当中相邻两项差的绝对值的个数(指绝对值不同的个数 ...
- Codeforces Round #486 (Div. 3) A. Diverse Team
Codeforces Round #486 (Div. 3) A. Diverse Team 题目连接: http://codeforces.com/contest/988/problem/A Des ...
- Codeforces Round #275 (Div. 1)A. Diverse Permutation 构造
Codeforces Round #275 (Div. 1)A. Diverse Permutation Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 ht ...
- 构造 Codeforces Round #275 (Div. 2) C. Diverse Permutation
题目传送门 /* 构造:首先先选好k个不同的值,从1到k,按要求把数字放好,其余的随便放.因为是绝对差值,从n开始一下一上, 这样保证不会超出边界并且以防其余的数相邻绝对值差>k */ /*** ...
- CodeForces Round #550 Div.3
http://codeforces.com/contest/1144 A. Diverse Strings A string is called diverse if it contains cons ...
- (原创)Codeforces Round #550 (Div. 3) D. Equalize Them All
D. Equalize Them All time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- Codeforces Round #275(Div. 2)-C. Diverse Permutation
http://codeforces.com/contest/483/problem/C C. Diverse Permutation time limit per test 1 second memo ...
- Codeforces Round #550 (Div. 3) F. Graph Without Long Directed Paths
F. Graph Without Long Directed Paths time limit per test 2 seconds memory limit per test 256 ...
- D. Equalize Them All Codeforces Round #550 (Div. 3)
D. Equalize Them All time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
随机推荐
- c# OrderBy 实现List升序降序
本文转载自:http://blog.csdn.net/chadcao/article/details/8730132 1)前台代码 <%@ Page Language="C#" ...
- (转)基于PHP——简单的WSDL的创建(WSDL篇)
本文转载自:http://blog.csdn.net/rrr4578/article/details/24451943 1.建立WSDL文件 建立WSDL的工具很多,eclipse.zends ...
- 人脸识别FaceNet+TensorFlow
一.本文目标 利用facenet源码实现从摄像头读取视频,实时检测并识别视频中的人脸.换句话说:把facenet源码中contributed目录下的real_time_face_recognition ...
- python paramiko 调试
#!/usr/bin/env python #-*- encoding:utf-8 -*- import paramiko transport = paramiko.Transport(('10.34 ...
- javascript——对象的概念——Object(未完)
http://www.blogjava.net/zkjbeyond/archive/2006/04/16/41336.html javascript中对象只包括属性和方法两种成员.ECMA-262 把 ...
- Oracle监听程序没法启动的一种解决办法
遇到的是监听日志多了 oracle\diag\tnslsnr\WIN-MLPKEV0JE05\listener\trace 删除 日志关闭 lsnrctl set log_status off;
- Hbase表重命名 表改名
PS:现在我有个表 :test11_new ,我要给他改名 开始: 1.先disable掉表hbase(main):023:0> disable 'test11_new' 0 row(s) i ...
- FAILED: Execution Error, return code 2 from org.apache.hadoop
错误遇到的情形: hive整合hbase,hive的数据表 load,select,insert一切正常 通过hive往hbase关联表插入数据的时候报错,错误内容如下: 2016-04-18 14: ...
- SSH简单搭建
本项目使用Struts2+spring3+hibernate3: 第一步:引入jar包,具体需要哪些包根据实际情况加入.注意:把jar包导入后需要对所有包Add to Build Path;然后对工程 ...
- 数据存储的两种方式:Cookie 和Web Storage(转)
数据存储的两种方式:Cookie 和Web Storage 数据存储的两种方式:Cookie 和Web Storage 1.Cookie Cookie的作用就像你去超市购物时,第一次给你办张购物卡 ...