# 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

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 个小写字母。

## 做法

#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()方法一起使用，后者创建一个映射表，用于定义哪些字符应该被替换。
25 0
|
2月前
|

29 0
|
3月前
|
C++
【洛谷 B2025】输出字符菱形 题解（raw string literal）

38 0
|
4月前
|
Python
Python字符串和字节不要混淆str.format()和bytes.format()
【5月更文挑战第6天】Python字符串和字节不要混淆str.format()和bytes.format()
23 1
|
4月前

56 0
|
12月前
|

CF1506C Double-ended Strings（差不多就是找最长串问题）
CF1506C Double-ended Strings（差不多就是找最长串问题）
36 0

58 0

190 0
|

leetcode：43. 字符串相乘(附加一些C++string其他小练习)
leetcode：43. 字符串相乘(附加一些C++string其他小练习)
107 0

DDNS