试题编号: 201703-3
试题名称: Markdown
时间限制: 1.0s
内存限制: 256.0MB
比较简单的字符串处理问题,用if-else语句对每种情况做不同的操作。
Markdown的行内语法可以在最先进行转换,然后用转换后的字符串替换读入串,比较简单。
还要注意读入段落和无序列表时结束标记的输出,具体可以以下代码的处理。
int main() {
string s;
bool para = 0, ul = 0;//para = 1表示正在读取段落,ul = 1表示正在读取无序列表
int p1, p2, p3, p4;
while (getline(cin, s)) {
//首先把"强调"转换成相应格式
while ((p1 = s.find("_")) != -1) {
string tmp;
s[p1] = 0;
tmp.append(s, 0, p1);
tmp += "<em>";
p2 = s.find("_");
tmp.append(s, p1 + 1, p2 - p1 - 1);
tmp += "</em>";
tmp.append(s, p2 + 1, s.length() - p2 - 1);
s = tmp;
}
//同样的把"链接"转换成相应格式
while ((p1 = s.find('[')) != -1) {
p2 = s.find(']');
p3 = s.find('(');
p4 = s.find(')');
string tmp;
tmp.append(s, 0, p1);
tmp += "<a href=\"";
tmp.append(s, p3 + 1, p4 - p3 - 1);
tmp += "\">";
tmp.append(s, p1 + 1, p2 - p1 - 1);
tmp += "</a>";
tmp.append(s, p4 + 1, s.length() - p4 - 1);
s = tmp;
}
//进入下一个区块前,如果上一个区块是段落,输出</p>
//如果是无序列表,输出</ul>
if (s.length() == 0) {
if (para) {
cout << "</p>" << endl;
para = 0;
}
if (ul) {
cout << "</ul>" << endl;
ul = 0;
}
continue;
}
else if (s[0] == '#') {
int num = 0;//保存#的数量
while (s[num] == '#') num++;
cout << "<h" << num << ">";
int p = num + 1;
while (s[p] == ' ') p++;//跳过空格
for (int i = p; i < s.length(); i++)
cout << s[i];
cout << "</h" << num << ">" << endl;
}
else if (s[0] == '*' || ul) {
if (!ul) {
cout << "<ul>" << endl;
ul = 1;
}
cout << "<li>";
int p = 1;
while (s[p] == ' ') p++;//跳过空格
for (int i = p; i < s.length(); i++)
cout << s[i];
cout << "</li>" << endl;
}
else {
//因为段落的结束符在最后一行的末尾,所以输出段落时做一点处理
if (para) cout << endl;
if (!para) {
cout << "<p>";
para = 1;
}
cout << s;
}
}
//要考虑最后一行是段落或者无序列表的情况
if (para) {
cout << "</p>" << endl;
}
if (ul) {
cout << "</ul>" << endl;
}
return 0;
}
文章浏览阅读629次。一、业务场景1、定时任务从数据库搜索一批需要处理的数据,大概在140w左右2、140w数据使用循环处理3、循环中,将数据处理任务提交到线程池(坑一),并在任务中,把处理结果推送到mq4、定时任务结束二、异常现象在执行循环到过程中,突然循环中断,任务处理失败,循环提前结束三、代码贴图主线程简化版代码如下// 获取全部需要处理的任务数据 List<T> needHandlerList = getNeedHandlerList(shardingContext); _org.springframework.amqp.amqpresourcenotavailableexception: the channelmax l
文章浏览阅读1.8k次,点赞2次,收藏4次。定义注释标签用于在源文档中插入注释。注释会被浏览器忽略。可使用注释对您的代码进行解释,这样做有助于自己和别人在以后对代码的编辑和理解。用法 <!-- 注释内容 --><html> <body> <!-- this is the comment , do not show in the browser,but can be view in the source code --> 只显示内容,没有头部信息。 <!-- 注释,不在浏览_h5注释
文章浏览阅读918次。写在前面今天学习在排序和查找中都很有用的特殊二叉树,平衡二叉树和搜索二叉树。相关代码实现已上传至Github:data_structure/Tree/1.二叉搜索树(Binary Search Tree)二叉搜索时是一种对排序和查找都很有用的特殊二叉树。其或者是一棵空树;或者是具有以下性质的二叉树:若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值 若右子树不空,..._二叉搜索树一定是二叉平衡树吗
文章浏览阅读451次。What the f*ck Python! ????一些有趣且鲜为人知的 Python 特性. Python, 是一个设计优美的解释型高级语言, 它提供了很多能让程序员感到舒适的功能特性. 但有的时候, Python 的一些输出结果对于初学者来说似乎并不是那么一目了然.这个有趣的项目意在收集 Python 中那些难以理解和反人类直觉的例子以及鲜为人知的功能特性, 并尝试讨论这些现象背后真正的原理!虽然..._python中123+5.0的执行结果
文章浏览阅读3.2k次。1. C#的编码转换默认由System.Text.Encoding进行操控转换.引用为: using System.Text;2. C# Encoding类自带编码有:UTF7/UTF8/UTF32/Unicode/ASCII,Encoding类有一个子类就是Default,此类会随操作环境变化而变化,在Windows平台上编码为"GB18030" (GBK为此编码子...
文章浏览阅读1.1w次,点赞8次,收藏62次。刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个,source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。_source ~/.bashrc
文章浏览阅读3.5k次,点赞2次,收藏5次。1、SVGSVG 可缩放矢量图形(Scalable Vector Graphics),是一种使用可扩展标记语言(XML)描述2D图形的语言。SVG严格遵从XML语法,并用文本格式的描述性语言来描述图像内容,因此是一种和图像分辨率无关的矢量图形格式。SVG基于XML,意味着SVG DOM中的每个元素都是可用的,可以为某个元素附加 JavaScript 事件处理器。在SVG中,每个被绘制的_canvas svg 缩放 性能
文章浏览阅读6.3k次。import java.util.*;public class Demo3 { /** * @param args */ /* * 编写程序接收一个ASCII码(从0至128),然后显示输入ASCII码所代表的字符。注意:(1)能够对1个或多个输入的ASCII码进行处理;(2)对于输入的非ASCII码进行判定和排除。_显示ascii码程序
文章浏览阅读3.9k次,点赞7次,收藏18次。每次电脑自动重启之后,就要从新打开各种软件。所以就想自己写一个bat脚本,批量启动自己想启动的各个应用服务。@echo off::启动 webstorm64echo start webstorm64call start /d "D:\Program Files\JetBrains\WebStorm 2020.2.1\bin" webstorm64.exe::暂停几秒再执行后面的 命令ping -n 5 127.1 >nul 2>nulecho webstorm6..._批量运行bat
文章浏览阅读1.3k次。德卡斯特(deCasteljau)递推公式绘制Bezier曲线德卡斯特递推算法比使用定义算法绘图简单了很多,已经成为绘制Bezier曲线的标准算法;参考上一篇文章添加下面代码: CP2 PP[4][4];//德卡斯特递推数组 void deCasteljau(double t);//德卡斯特递推计算 void DrawdeCasteljauBezier(CDC*pDC);//绘制德卡斯特曲线void CdrawBezierCurveView::deCasteljau(double t){_decasteljau递推算法代码
文章浏览阅读1.2w次。分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴! 继续跟着教材做实验。在_域用户 连接被拒绝,因为没有授权此用户账户进行远程登陆
文章浏览阅读624次。From:Android源码分析之拍照、图片、录音、视频和音频功能 //选择图片 requestCode 返回的标识Intent innerIntent = new Intent(Intent.ACTION_GET_CONTENT); //"android.intent.action.GET_CONTENT"innerIntent.setType(con_安卓实现 相机功能 录音拍照视频