⭐⭐201703-3 Markdown

2024-02-27 12:58
文章标签 markdown 201703

本文主要是介绍⭐⭐201703-3 Markdown,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SOS写了两个小时只得了10分,居敏!

#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <vector>
#include <map>
#include<string>
using namespace std;
string line, text;
int pos1,pos2,pos3,pos;
int num;//记录数字
// 段落处理
string temptext;
string link;
int i;
void solve()
{  //首先处理强调pos1 = 0;num=0;for (pos1 = text.find("_", pos1); pos1 != string::npos; pos1= text.find("_", pos1 )){//printf("pos1=%d\n",pos1);num++;if(num&1)//如果是奇数text.replace(pos1, 1, "<em>");elsetext.replace(pos1, 1, "</em>");pos1++;}//处理超级链接pos = pos2 = pos3 = 0;pos1 = text.find("[",pos);pos2 = text.find("](", pos1);pos3 = text.find(")",pos2);for (;pos1!=-1&&pos2!=-1&&pos3!=-1;){temptext = text.substr(pos1+1,pos2-pos1-1);link = text.substr(pos2+2,pos3-pos2-2);text.replace(pos1,pos3-pos1+1,"<a href=\""+link+"\">"+temptext+"</a>");pos = pos3 + 1;pos1 = text.find("[", pos);pos2 = text.find("](", pos1);pos3 = text.find(")", pos2);}//下面处理区块//是标题if (text[0] == '#')//是标题{//printf("是标题\n");for (i = 0; i < text.length(); i++){if (text[i] != '#')break;}        char c[5];c[0] = '<';c[1] = 'h';c[2] = i+'0';c[3] = '>';c[4] = '\0';while (text[i] == ' ')//还是空格的时候{           i++;}text.replace(0,i,c);text.insert(text.length() - 1, c);}else  if (text[0] == '*')//是无序列表{//printf("是无序列表\n"); // cout << "处理前" << text << endl;text.insert(0, "<ul>\n");pos1 = 1;pos1 = text.find("\n");int num = 0;for (; pos1 != -1; pos1 = text.find("\n*", pos1 + 5)){//printf("pos1=%d\n",pos1);num++;if (num & 1)//是奇数{text.replace(pos1 + 1, 1, "<li>");//cout << text << endl;i = pos1+5;while (text[i] == ' '){i++;}// printf("i=%d\n",i);text.erase(pos1 + 5, i-pos1-5);//  cout << text << endl;}else//是偶数{text.insert(pos1, "</li>");}        }text.insert(text.length()-1, "</li>\n</ul>\n");}else//是普通段落{// printf("是普通段落\n");text.insert(0,"<p>");text.insert(text.length()-1, "</p>");}cout << text << endl;text = "";//text重新清零
}int main()
{bool flag = false;getline(cin, line);//这样逐行输入line,其实处理的是text,并且没有忘记换行符号for (; ;) {if (line.size() > 0)text += line + "\n";else if (line.size() == 0 && text.size() > 0){// cout<<"开始处理"<<endl;solve();}if (flag) break;if (!getline(cin, line)) {flag = true;line = "";}}return 0;
}

参考链接
还是自己的思路不够清晰,搞太复杂了,经典的字符串处理啊啊啊!

#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <vector>
#include <map>
#include<string>
/* CCF201703-3 Markdown */
using namespace std;
string line, text;
// 段落处理
void solve()
{// 处理下划线:标签<em></em>int leftp = text.find("_");while (leftp != string::npos) {text.replace(leftp, 1, "<em>");int rightp = text.find("_", leftp);text.replace(rightp, 1, "</em>");leftp = text.find("_", rightp);}// 处理方括号leftp = text.find("[");while (leftp != string::npos) {int rightp = text.find("]", leftp);int leftp2 = text.find("(", rightp);int rightp2 = text.find(")", leftp2);string tmp = text.substr(leftp + 1, rightp - leftp - 1);string tmp2 = text.substr(leftp2 + 1, rightp2 - leftp2 - 1);text.replace(text.begin() + leftp, text.begin() + rightp2 + 1, "<a href=\"" + tmp2 + "\">" + tmp + "</a>");leftp = text.find("[", rightp2);}if (text[0] == '#') {// 处理#:标签<h></h>int i = 0;while (text[i] == '#') i++;//这里的string好像转换成了字符类型text = "<h" + string(1, '0' + i) + ">" + text.substr(i + 1);text.insert(text.size() - 1, "</h" + string(1, '0' + i) + ">");}else if (text[0] == '*') {// 处理*:标签<ul><li></li>......</ul>text.insert(0, "<ul>\n");text.insert(text.size(), "</ul>\n");int leftp = text.find("*");while (leftp != string::npos) {int rightp = text.find("\n", leftp);text.insert(rightp, "</li>");text.replace(leftp, 2, "<li>");leftp = text.find("*", rightp);}}else {// 处理段落:<p></p>text = "<p>" + text.substr(0, text.size() - 1) + "</p>\n";}cout << text;text = "";
}int main()//注意这里的输入很重要!
{bool flag = false;getline(cin, line);for (; ;) {if (line.size() > 0)text += line + "\n";else if (line.size() == 0 && text.size() > 0)solve();if (flag) break;if (!getline(cin, line)) {flag = true;line = "";}}return 0;
}

这篇关于⭐⭐201703-3 Markdown的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/752468

相关文章

Prompt - 将图片的表格转换成Markdown

Prompt - 将图片的表格转换成Markdown 0. 引言1. 提示词2. 原始版本 0. 引言 最近尝试将图片中的表格转换成Markdown格式,需要不断条件和优化提示词。记录一下调整好的提示词,以后在继续优化迭代。 1. 提示词 英文版本: You are an AI assistant tasked with extracting the content of

【H2O2|全栈】Markdown | Md 笔记到底如何使用?【前端 · HTML前置知识】

Markdown的一些杂谈 目录 Markdown的一些杂谈 前言 准备工作 认识.Md文件 为什么使用Md? 怎么使用Md? ​编辑 怎么看别人给我的Md文件? Md文件命令 切换模式 粗体、倾斜、下划线、删除线和荧光标记 分级标题 水平线 引用 无序和有序列表 ​编辑 任务清单 插入链接和图片 内嵌代码和代码块 表格 公式 其他 源代码 预

【Markdown】如何在Markdown中合并单元格

Markdown语法本身不包含复杂表格的插入,但是可以使用html语法来实现。 水平单元格的合并:基于colspan属性,即使一个单元格占多列的空间纵向单元格的合并:基于rowspan属性,即使一个单元格占多行的空间 要想MarkDown中插入复杂表格时,可以先在word或excel中把表格写好,然后在如下网站进行转化为标记对形式: http://pressbin.com/tools/exc

【Markdown】输入空格方式

文章目录 1.nbsp2. ensp3. emsp4.thinsp5. zwnj6. zwj7. 其它 1.nbsp &nbsp;为“不换行空格”,全称“No-Break Space”,它是最常见和我们使用最多的空格,大多数的人可能只接触了 ,它是按下space键产生的空格。在HTML中,如果你用空格键产生此空格,空格是不会累加的(只算1个)。要使用html实体表示才可累加,该

好用的 Markdown 编辑器组件

ByteMD bytedance/bytemd: ByteMD v1 repository (github.com) 这里由于我的项目是 Next,所以安装 @bytemd/react, 阅读官方文档,执行命令来安装编辑器主体、以及 gfm(表格支持)插件、highlight 代码高亮插件: npm i @bytemd/reactnpm i @bytemd/plugin-highlight

CSDN的Markdown编辑器语法

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入

MWeb Pro - Mac 平台专业 Markdown 编辑器

作为 Mac 平台老牌的 Markdown 编辑器,MWeb 4 让专业写作、记笔记变得轻松自在。 兼容性更出色 开发者将此前自研的 One Markdown 整合到 MWeb 4 中,而且适配苹果 M系列芯片电脑,兼容性更加出色。 完整支持广泛使用的 CommonMark 标准和 GitHub Flavored Markdown 特性,而且在新技术加持下性能大大提升,编辑上百万字文档也

csdn,Markdown语法保存

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入

本地编写Markdown格式文件,浏览器查看

编写准备 下载VsCode并安装,打开后在内部安装Markdown All in One、Markdown Preview Enhanced、Paste Image三个插件。新建一个文件夹用以后期保存你的笔记等文件在左侧新建文件,.md结尾,即完成创建右侧可实时的查看你的编写结果,本地查看可直接使用浏览器查看,浏览器内查看时须安装MarkdownViewer插件每一种格式的下方均有解释,编辑器内

Markdown语法与Latex公式汇总

1 基本语法 1.1 标题 语法如下: 效果如下: 1.2 字体样式 语法效果普通正文字体普通正文字体*倾斜字体*倾斜字体**加粗字体**加粗字体***倾斜加粗字体***倾斜字体~~划线字体~~倾斜字体 1.3 分割线 语法如下: 效果如下: 1.4 引用 语法如下: 效果如下: 1.5 列表 有序列表 语法如下: 效果如下: 无序列表 语法如下: 效果