【违规紫衫】站外题求助!
  • 板块学术版
  • 楼主bc2_cryeggy
  • 当前回复9
  • 已保存回复9
  • 发布时间2023/6/2 19:25
  • 上次更新2023/10/23 14:05:02
查看原帖
【违规紫衫】站外题求助!
814343
bc2_cryeggy楼主2023/6/2 19:25

构建字符串 时间限制:C/C++ 2000MS,其他语言 4000MS 内存限制:C/C++ 512MB,其他语言 1024MB 描述

小W今天学习了什么是字符串, 他突发奇想有这么一个问题 , 他设定了一个字符串的产生过程, 首先这个字符串全部是由小写字母组成 , 一开始的时候字符串为空, 然后从字符a开始插入这个字符串s,只可以插在字符串的头或尾 , 而且是按字典顺序(a~z)一个字符一个字符的使用, 现在给你t个字符串, 让你判断这些字符串是不是按照这个规则生成的,对于每个字符串输出 YES 或 NO.

输入描述

第一行一个整数t,表示有t个字符串需要判断. (1<=t<=10^4) 接下来t行每行一个要判断的字符串s . (1<=s.size()<=26)

输出描述

t行, 对于每个字符串输出 YES 或 NO.

用例输入 1

11 a ba ab bac ihfcbadeg z aa ca acb xyz ddcba 用例输出 1

YES YES YES YES YES NO NO NO NO NO NO 提示

ihfcbadeg a ba cba cbad cbade fcbade fcbadeg hfcbadeg ihfcbadeg 依次插入的abcdefghi ,插入的位置在头或尾 合法 输出YES

求 hack,造数据和样例 AC,数据没过

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define qwq ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)  
const int N = -1;
string s;

signed main()
{
	qwq;
	int T;
	cin >> T;
	while (T --)
	{
		cin >> s;
		int n = s.size(), pos1, pos2, sch = 1;
        /*pos1 is left, pos2 is right, sch is 进度*/
        pos1 = pos2 = s.find("a");
        if (pos1 == -1)
            cout << "NO" << endl;
        else
        {
            int f = 1;
        	while (1)
        	{
         	   if (sch >= n)
          	      break;
          	   char _sch = (sch + 'a');
          	   if (_sch == s[pos1 - 1])
           	       -- pos1;
           	   else if (_sch == s[pos2 + 1])
            	   ++ pos2;
           	    else
            	{
                	f = 0;
                	break;
            	}
            	++ sch;
         	}
        	if (n == 1 && s[0] == 'a')
            	cout << "YES" << endl;
        	else if (n == 1 && s[0] != 'a')
            	cout << "NO" << endl;
        	else if (!f)
            	cout << "NO" << endl;
        	else
            	cout << "YES" << endl;
		}
    }
	return 0;
}
/*pbl nbr:*/

2023/6/2 19:25
加载中...