微软编辑器的代码高亮 (恶心模拟)
来源:互联网 发布:c4世嘉轮毂数据 编辑:程序博客网 时间:2024/05/17 08:37
微软的一款代码编辑器 VS Code 需要在编辑代码时将代码高亮。其中,有一个子问题是判断一串文本是否是 一个合法字符串。一个合法字符串是指由一对单引号或一对双引号包裹的文本字符集,字符集包括所有英文小写字母、单引号、双引号和斜杠(\)。
比如”abc”、’ab”c’都是一个合法的字符串,而”abc”de”、’ab”c’和abc都不是一个合法的字符串。
字符串中可能有转义字符,转义字符只有 333 种:\”、\’ 和 \,分别表示:字符串中的双引号、单引号和斜杠
当字符串由 双引号 包裹时,字符串中的 双引号 必须以转义字符出现,否则会被认为是不合法字符串;
当字符串由 单引号 包裹时,字符串的 单引号 必须以转义字符出现,否则会被认为是不合法字符串;
字符串中的斜杠(\)必须以转义字符出现,否则会被认为是不合法字符串。
输入格式
只有一行,表示输入的文本,文本的长度 lenlenlen 满足 1≤len≤100001 \leq len \leq 100001≤len≤10000。保证输入只包含英文小写字母、单引号、双引号和斜杠(\)。
输出格式
如果输入的一串文本是一个合法的字符串,则输出Yes,否则输出No。
样例输入1
“abc”
样例输出1
Yes
样例输入2
“abc”“def”
样例输出2
No
样例输入3
“ab\c”
样例输出3
No
好恶心的模拟,WA了一发,因为这让两句话
当字符串由 双引号 包裹时,字符串中的 双引号 必须以转义字符出现,否则会被认为是不合法字符串当字符串由 单引号 包裹时,字符串的 单引号 必须以转义字符出现,否则会被认为是不合法字符串
太恶心了!!!!!
#include<bits/stdc++.h>using namespace std;const int maxn=10005;char a[maxn];char s[maxn];int main() { while(~scanf("%s",a)) { int len=strlen(a); bool ans=true; if(len<2) { ans=false; } int f=-1; if(ans&&a[0]=='\''&&a[len-1]=='\'')f=0; if(ans&&a[0]=='"'&&a[len-1]=='"')f=1; if(f==-1)ans=false; if(len<=2){ puts(ans?"Yes":"No");continue; } a[0]=a[len-1]='*'; for(int i=0;i<len;++i){ if(a[i]=='*')continue; if(a[i]=='\\'){ a[i]='*'; if(i+1<len&&(a[i+1]=='\''||a[i+1]=='"'||a[i+1]=='\\'))a[i+1]='*'; else ans=false; } if(a[i]=='\''){ if(i-1>=0&&a[i-1]=='\\')a[i]=a[i-1]='*'; else if(f==1); else ans=false; } if(a[i]=='\"'){ if((i-1>=0&&a[i-1]=='\\'))a[i]=a[i-1]='*'; else if(f==0); else ans=false; } } int top=0; for(int i=0;(i<len)&&ans;++i){ if(a[i]!='*')a[top++]=a[i]; } len=top; for(int i=0;ans&&(i<len);++i){ if(a[i]=='\''&&f==0)ans=false; if(a[i]=='"'&&f==1)ans=false; if(a[i]=='\\')ans=false; } puts(ans?"Yes":"No"); } return 0;}
0 0
- 微软编辑器的代码高亮 (恶心模拟)
- 微软编辑器的代码高亮
- 恶心的微软
- 百度编辑器代码高亮
- HDU1648 Keywords 恶心的模拟题
- HDU 2816 有趣的恶心模拟
- 【恶心的模拟 && 找时刻问题】CodeForces
- 基于Canvas元素的代码高亮编辑器Daisy Editor
- 恶心代码
- 百度ueditor编辑器代码高亮
- 百度编辑器(UEditor)代码高亮
- 临时文档8--好恶心的代码
- VBS代码--很恶心的整人效果
- VC code 在mac 下面的微软代码编辑器
- 不借助编辑器自带的代码高亮工具(Syntaxhighlighte),生成完美格式的语法高亮代码
- Ext ExtJS 中嵌入 codepress 做代码的语法高亮 作色 在线代码编辑器
- hdu5059 恶心模拟TAT
- hdu 4964 恶心模拟
- 什么是虚拟内存?
- jquery中的事件
- 前端源码安全
- 大牛博客收藏 相关网址和链接
- SQL中MAX()和MIN()函数的使用
- 微软编辑器的代码高亮 (恶心模拟)
- 深入理解二维数组
- win7 vs2012/2013 编译boost 1.59
- 核心统一过程EssUP——目的和定义(如何更好的规范软件研发过程)
- Android中的Drawable资源—— GradientDrawable
- MySQL密码修改的方法
- java的一些知识(九)
- 用DOM4j解析xml文件
- Object类源码解析