markdown渲染器

来源:ACwing–yxc

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <cstdio>
using namespace std;const int N= 20*1024*1024+10;char str[N];
vector<string>strs;bool check_black(string& s){//判断是否是空行for(auto c:s)if(c!=' ')return false;return true;
}
int get(string &s)//得到每行的属性
{if(check_black(s))return 0;//空行if(s.size()>=2&&s[0]=='*'&&s[1]==' ')return 1;//项目if(s.size()>=2&&s[0]==' '&&s[1]==' ')return 2;//项目剩余行return 3;//其他
}
string trim(string s)//对每行进行裁剪,去掉首部和尾部的空格
{int i=0,j=s.size()-1;while(i<=j&&s[i]==' ')i++;while(i<=j&&s[j]==' ')j--;if(i>j)return "";//空行return s.substr(i,j-i+1);
}
int wc(string &s,int w)//当终端宽度为w时,去掉折后排在首位的空格
{int res=0;for(int i=0;i<s.size();i++){if(s[i]==' ')continue;//去掉渲染后首部的空格int j=i+1;while(j<s.size()&&j-i+1<=w)j++;res++;//行数+1i=j-1;}return max(res,1);//行数至少为1
}
int main()
{int w;scanf("%d",&w);getchar();while(fgets(str,N,stdin)){strs.push_back(str);strs.back().pop_back();//删除回车}int r=-1;int last=0;//0为空行,1为项目,23为段落for(int i=0;i<strs.size();){int t=get(strs[i]);if(t==0)i++,last=2;else if(t==1){if(last!=1)r++;last=1;string line=trim(strs[i].substr(2));i++;while(i<strs.size()){if(get(strs[i])==2)//项目剩余行{line+=' '+trim(strs[i].substr(2));i++;}else break;}r+=wc(line,w-3);}else{r++;last=0;string line=trim(strs[i]);i++;while(i<strs.size()){int t=get(strs[i]);if(t==2||t==3){line+=' '+trim(strs[i]);i++;}else break;}r+=wc(line,w);}}printf("%d\n",r);return 0;
}
不得不说大神太强了,把段落和项目的需求融合到一起,读懂题意还是很重要啊!

markdown渲染器--ACwing网站yxc老师题解相关推荐

  1. CCF202006-3 Markdown渲染器(100分)【文本处理】

    试题编号: 202006-3 试题名称: Markdown渲染器 时间限制: 1.0s 内存限制: 512.0MB 问题链接:CCF202006-3 Markdown渲染器 问题简述:(略) 问题分析 ...

  2. 【Hexo】选择更高级的Markdown渲染器

    目录 引言 安装 配置 插件 安装 用法 基础 进阶 提示 拓展 插画 引言 Hexo 默认搭配的 Markdown 渲染器是 hexo-renderer-marked,但其支持的渲染格式有限,不利于 ...

  3. 渲染器引入KaTeX 模块——实现实时渲染

    我们在 Gitea 1.18 版的 Markdown 渲染器中引入了 KaTeX 模块,这使得 Gitea 前端界面具备了渲染数学公式的能力,你可以在文本编辑器中混合使用 TeX 语法,在线分享你的数 ...

  4. 刘光瑞php,PHP Markdown 解析器 HyperDown

    软件介绍 HyperDown 是 SegmentFault 开发的一个结构清晰.易于维护.现代的 PHP Markdown 解析器. Markdown已经面世许多年了,国内外许多大大小小的网站都在用它 ...

  5. [转]HDR渲染器的实现(基于OpenGL)

    http://dev.gameres.com/Program/Visual/3D/HDRTutorial/HDRTutorial.htm 作者:何咏(欢迎和大家交流,我的QQ:35574585,Ema ...

  6. Java如何解析markdown_使用Java实现的一款Markdown解析器md2x

    使用Java实现的一款Markdown解析器md2x 前段时间在写自己的博客程序的时候,在前台使用了marked.js来解析自己的markdown文章,然后发现在进入文章页面的时候总会闪烁一下(前台解 ...

  7. Acwing 271. 杨老师的照相排列

    Acwing 271. 杨老师的照相排列 题意: 有n个数分别是从1到n,现在排成k排,每排分别有Ci个数,要求每排每列的都是从小到大,问有多少种方案 题解: 因为每行每列都是单调的,因此我们可以从小 ...

  8. D5渲染器电脑硬件配置Vol.1——操作系统丨显卡

    D5 有什么电脑配置需求?电脑配置明明够了却带不动D5?显卡好多分类我需要什么显卡?...... 许多刚接触 D5 的用户对 D5 需要的电脑硬件配置疑问较多,这次一个合集解答所有问题,后续会根据内容 ...

  9. 用C#实现一个简易的软件光栅化渲染器

    这是一个用C#+winform实现的软件光栅化渲染器,今天拿出来与大家分享一下,希望能起到抛砖引玉的作用,给新人一点启发(结构比较简单,注释比较详细^_^),也欢迎司机们拍砖指点和交流~ 目的: 巩固 ...

最新文章

  1. jsp java 登陆_jsp+java servlet实现简单用户登录
  2. redis(二)redis实战 使用redis进行文章的排序
  3. 全向飞行器的设计与制作-学生初步汇报内容
  4. 9、MySQL系统变量(查看和修改)
  5. python输入一组数字存到列表_Python如何使用输入传递多个值并将它们存储在一个列表中(简单版本),python,怎么,input,传入,储存,到...
  6. C# 静态类和非静态类(实例类)
  7. 大数据算法岗位面试题
  8. Bootstrap table列内容过长,显示固定长度,超过内容隐藏
  9. java 变量 安全访问_访问java变量
  10. MainStoryboard.storyboard could not be opened
  11. c++rs法计算hurst指数_计算机组成原理与接口技术
  12. QtCreator无法启动进程“mingw32-make.exe
  13. 多道程序 cpu利用率
  14. 详解数据库三大范式、BCNF范式
  15. 计算机组成原理课程设计基于cop2000
  16. 什么是微前端及微前端优缺点
  17. html5猜颜色游戏,好看漂亮的html5网页特效学习笔记(3)_猜猜下一个颜色是什么?...
  18. 在word中使用Endnote
  19. 后补贴时代的内容平台之战
  20. Android程序安全系统和一键Root

热门文章

  1. Python为何能上位碾压Java?
  2. NoSQL 与大数据
  3. 串口设备短信模块开发笔记
  4. 阿里巴巴2015校园招聘面试大礼包
  5. 手机、平板与手表,华为一个都不能少
  6. HTML特效,旋转的正方体
  7. 集线器 交换机 路由器关系
  8. DICOM协议学习笔记(二)
  9. retry重试常见场景及实现
  10. shell脚本检查域名证书是否过期