zoukankan      html  css  js  c++  java
  • CCF-Markdown-201703-3

    这道题不存在递归结构

       比如区块之间的相互嵌套 还有"[ [] ]" 链接的相互嵌套, 所以直接处理就好了

    还可以

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 string trans (string str) {
     4     string tmp; int i=0;
     5     while (i<str.size()) {
     6         bool flag=0; string txt,link;
     7         while (i<str.size()&&str[i]!='[')  tmp+=str[i++];
     8         if (str[i]=='[') { flag=1; i++;}
     9         if (flag) {
    10             while (str[i]!=']') txt+=str[i++];
    11             i+=2;
    12             while (str[i]!=')') link+=str[i++];
    13             i++;
    14             tmp+="<a href=""+link+"">"+txt+"</a>";
    15         }
    16     }
    17     str=tmp; tmp=""; i=0;
    18     while (i<str.size()) {
    19         bool flag=0; string txt;
    20         while (i<str.size()&&str[i]!='_') tmp+=str[i++];
    21         if (str[i]=='_') {flag=1; i++;}
    22         if (flag) {
    23             while (str[i]!='_') txt+=str[i++];
    24             i++;
    25             tmp+="<em>"+txt+"</em>";
    26         }
    27     }
    28     return tmp;
    29 }
    30 void trs2(string str) {
    31     int i=1; for (;str[i]==' ';i++);
    32     cout<<"<li>"<<trans(str.substr(i))<<"</li>
    ";
    33 }
    34 int main ()
    35 {
    36     string str;
    37     //freopen("test.txt","r",stdin);
    38     while (getline(cin,str)) {
    39         if (str[0]=='#') {
    40             int i=0,x=0;
    41             for (;str[i]=='#';i++) x++;
    42             for (;str[i]==' ';i++);
    43             cout<<"<h"<<x<<">"<<trans(str.substr(i))<<"</h"<<x<<">
    ";
    44         }
    45         else if (str[0]=='*') {
    46             cout<<"<ul>
    ";
    47             trs2(str);
    48             while (getline(cin,str)&&str.size()!=0) 
    49                 trs2(str);
    50             cout<<"</ul>
    ";
    51         }
    52         else if (str.size()!=0) {
    53             cout<<"<p>"<<trans(str);
    54             while (getline(cin,str)&&str.size()!=0)
    55                 cout<<"
    "<<trans(str);
    56             cout<<"</p>
    ";
    57         }
    58     }
    59     return 0;
    60 }
    抓住青春的尾巴。。。
  • 相关阅读:
    MyBatis常见面试题以及解读
    如何防止sql注入攻击
    宝塔Linux面板基础命令
    Centos7配置静态ip
    宝塔Linux面板安装
    idea中安装阿里巴巴的代码规范插件
    idea中快速将类中的属性转为Json字符串的插件
    创建线程的四种方式
    sleep()方法与wait()方法的区别
    解决线程安全的几种方式
  • 原文地址:https://www.cnblogs.com/xidian-mao/p/10491432.html
Copyright © 2011-2022 走看看