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; 
  }
 } 


相关文章
|
12月前
CF1553B Reverse String(数学思维)
CF1553B Reverse String(数学思维)
34 0
|
2月前
|
机器学习/深度学习 缓存 安全
Python标准库中的`str`类型有一个`translate()`方法,它用于替换字符串中的字符或字符子集。这通常与`str.maketrans()`方法一起使用,后者创建一个映射表,用于定义哪些字符应该被替换。
Python标准库中的`str`类型有一个`translate()`方法,它用于替换字符串中的字符或字符子集。这通常与`str.maketrans()`方法一起使用,后者创建一个映射表,用于定义哪些字符应该被替换。
|
2月前
|
语音技术
语音识别,运算符,字符串的三种成定义方式,\“转意字符的定义,字符串的拼接,TypeError: can only concatenate str (not “init “) to str是浮点数和整
语音识别,运算符,字符串的三种成定义方式,\“转意字符的定义,字符串的拼接,TypeError: can only concatenate str (not “init “) to str是浮点数和整
|
3月前
|
C++
【洛谷 B2025】输出字符菱形 题解(raw string literal)
使用`*`构建一个斜置的、对角线长度为5的菱形。无输入要求。输出示例:`*`、`***`、`*****`、`***`、` *`。代码实现使用C++,直接打印预定义字符串完成。
38 0
|
4月前
|
Python
Python字符串和字节不要混淆str.format()和bytes.format()
【5月更文挑战第6天】Python字符串和字节不要混淆str.format()和bytes.format()
23 1
|
4月前
从接口获取获取到数组arr=[‘1‘,‘a‘,‘2‘,‘b‘,‘3‘,‘c‘]转换成{number:‘123’,char:‘abc’}
从接口获取获取到数组arr=[‘1‘,‘a‘,‘2‘,‘b‘,‘3‘,‘c‘]转换成{number:‘123’,char:‘abc’}
|
12月前
|
物联网
CF1506C Double-ended Strings(差不多就是找最长串问题)
CF1506C Double-ended Strings(差不多就是找最长串问题)
36 0
将一个字符串的str的内容颠倒过来,并输出
将一个字符串的str的内容颠倒过来,并输出
输入一个字符串,把其中的字符按逆序输出。如输入LIGHT,输出THGIL。要求用string方法。
输入一个字符串,把其中的字符按逆序输出。如输入LIGHT,输出THGIL。要求用string方法。
|
存储 canal 算法
leetcode:43. 字符串相乘(附加一些C++string其他小练习)
leetcode:43. 字符串相乘(附加一些C++string其他小练习)