CF1547B Alphabetical Strings(了解字符串的的一些规律)

简介: CF1547B Alphabetical Strings(了解字符串的的一些规律)

Alphabetical Strings



time limit per test2 seconds

memory limit per test512 megabytes

inputstandard input

outputstandard output


A string s of length n (1≤n≤26) is called alphabetical if it can be obtained using the following algorithm:


first, write an empty string to s (i.e. perform the assignment s := “”);

then perform the next step n times;


at the i-th step take i-th lowercase letter of the Latin alphabet and write it either to the left of the string s or to the right of the string s (i.e. perform the assignment s := c+s or s := s+c, where c is the i-th letter of the Latin alphabet).


In other words, iterate over the n first letters of the Latin alphabet starting from ‘a’ and etc. Each time we prepend a letter to the left of the string s or append a letter to the right of the string s. Strings that can be obtained in that way are alphabetical.


For example, the following strings are alphabetical: “a”, “ba”, “ab”, “bac” and “ihfcbadeg”. The following strings are not alphabetical: “z”, “aa”, “ca”, “acb”, “xyz” and “ddcba”.


From the given string, determine if it is alphabetical.


Input

The first line contains one integer t (1≤t≤10^4) — the number of test cases. Then t test cases follow.


Each test case is written on a separate line that contains one string s. String s consists of lowercase letters of the Latin alphabet and has a length between 1 and 26, inclusive.


Output

Output t lines, each of them must contain the answer to the corresponding test case. Output YES if the given string s is alphabetical and NO otherwise.


You can output YES and NO in any case (for example, strings yEs, yes, Yes and YES will be recognized as a positive answer).


Example


inputCopy

11

a

ba

ab

bac


ihfcbadeg

z

aa

ca

acb

xyz

ddcba


outputCopy

YES

YES

YES

YES

YES

NO

NO

NO

NO

NO

NO


Note

The example contains test cases from the main part of the condition.


题意分析


生成一个字符串(字符都是小写字母)。生成规则如下:


·初始字符串是空的。


·每次在前面或后面加入一个字符,第 ii 次加入的字符是小写字母表中第 ii 个小写字母。


给一些字符串,请判断是否可以被生成出来。


做法



显然若字符串中字符的出现并不连续或者同一个字符出现了两次,那么该串是不行的。


举个栗子:dba,bab。


然后我们看:每次字母从小到大加,且加在两侧,那是不是中间的字符会比旁边的小呢?


有了这些结论,这题就做完了,上代码。

#include<bits/stdc++.h>
using namespace std;
int main()
{
  int t;
  cin>>t;
  while(t--)
  {
    string s;
    cin>>s;
    int l=0;
    int r=s.size()-1;
    while(l<=r)
    {
      if((s[l]-'a')==r-l)
      l++;
      else if((s[r]-'a')==r-l)
      r--;
      else break; 
    }
    if(l>r)
    cout<<"YES"<<endl;
    else
    cout<<"NO"<<endl; 
  }
 } 


相关文章
|
9天前
|
C++
【洛谷 B2025】输出字符菱形 题解(raw string literal)
使用`*`构建一个斜置的、对角线长度为5的菱形。无输入要求。输出示例:`*`、`***`、`*****`、`***`、` *`。代码实现使用C++,直接打印预定义字符串完成。
23 0
|
1月前
|
存储 测试技术
luatos 字符串与数组转换,解析hex数组
luatos 字符串与数组转换,解析hex数组
49 1
|
9月前
|
存储 算法 C语言
【C++】对于string的补充(成员函数c_str()、大小写转换、字符串和实数之间的相互转换)
【C++】对于string的补充(成员函数c_str()、大小写转换、字符串和实数之间的相互转换)
46 0
|
9月前
|
物联网
CF1506C Double-ended Strings(差不多就是找最长串问题)
CF1506C Double-ended Strings(差不多就是找最长串问题)
26 0
|
9月前
CF236A Boy or Girl(找字符数,可以考虑去重)
CF236A Boy or Girl(找字符数,可以考虑去重)
24 0
将一个字符串的str的内容颠倒过来,并输出
将一个字符串的str的内容颠倒过来,并输出
fmt.Printf() 如果 format 里结尾没有 \n,输出的字符串串结尾会带有一个 '%'
fmt.Printf() 如果 format 里结尾没有 \n,输出的字符串串结尾会带有一个 '%'
|
Java 程序员
Java 格式转换:利用格式转换实现随机数生成随机 char 字母及 string 字母串
Java 格式转换:利用格式转换实现随机数生成随机 char 字母及 string 字母串
143 0
Java 格式转换:利用格式转换实现随机数生成随机 char 字母及 string 字母串
|
人工智能 BI
CF1398C. Good Subarrays(思维 前缀和)
CF1398C. Good Subarrays(思维 前缀和)
80 0
|
存储 Python
Python bytes字节串与string字符串之间的转换
Python bytes字节串与string字符串之间的转换