zoukankan      html  css  js  c++  java
  • 【NOIP2007提高组】字符串展开

    【题外话】这道题纯粹考验耐心,某些经常调程序调到摔键盘的人可以尝试

    【题外话2】除了考耐心以外完全没有什么难点

    【题外话3】也许会稍微恶心一点?

    【题外话4】其实我是在别人军训的时候滚来更博客的简直233333

     题目不贴了,NOIP2007原题什么的,然后就是关于某些小细节的处理,比如以‘-’开头啊,以‘-’结尾啊,还有‘--’啊,还有一种题目中提到的,‘-’两边分别是数字和字母,以及关于填充大写字母的时候数字不变什么的。

     总体来说其实就是一道字符处理模拟题,稍微细心与耐心一点的都可以10minAC

     我已经懒得吐槽自己的代码风格了。

      1 #include <algorithm>
      2 #include <iostream>
      3 #include <fstream>
      4 #include <cstdlib>
      5 #include <cstring>
      6 #include <string>
      7 using namespace std;
      8 ifstream fin("expand.in");
      9 ofstream fout("expand.out");
     10 string old,nw;
     11 int p1=0,p2=0,p3=0;
     12 void zx(int wi);
     13 void fx(int wi);
     14 int main(void)
     15 {
     16  fin>>p1>>p2>>p3;
     17  fin>>old;
     18  for(int i=0;i<old.size();i++)
     19     {
     20      if(old[i]=='-'&&i>=1&&i<old.size()-1)
     21        {
     22         if(old[i-1]=='-'||old[i+1]=='-')
     23           {
     24            nw+=old[i];
     25            continue;
     26           }
     27         if(old[i-1]>=old[i+1])
     28           {
     29            nw+=old[i];
     30            continue;
     31           }
     32         if((old[i-1]>='a'&&old[i-1]<='z')&&(old[i+1]<'a'||old[i+1]>'z'))
     33           {
     34            nw+=old[i];
     35            continue;
     36           }
     37         if((old[i+1]>='a'&&old[i+1]<='z')&&(old[i-1]<'a'||old[i-1]>'z'))
     38           {
     39            nw+=old[i];
     40            continue;
     41           }
     42         if(p3==1)zx(i);
     43         else fx(i);
     44        }
     45      else nw+=old[i];
     46     }
     47  fout<<nw;
     48  return 0;
     49 }
     50 void zx(int wi)
     51 {
     52  char ja;
     53  for(int i=1;i<=(old[wi+1]-old[wi-1])-1;i++)
     54     {
     55      for(int j=1;j<=p2;j++)
     56         {
     57          if(p1==1)
     58            {
     59             ja=old[wi-1]+i;
     60             nw+=ja;
     61            }
     62          if(p1==2&&old[wi+1]>='a'&&old[wi+1]<='z')
     63            {
     64             ja=old[wi-1]+i;
     65             ja-='a';
     66             ja+='A';
     67             nw+=ja;
     68            }
     69          if(p1==2&&(old[wi+1]<'a'||old[wi+1]>'z'))
     70            {
     71       ja=old[wi-1]+i;
     72             nw+=ja;
     73            }
     74          if(p1==3)
     75            {
     76             nw+="*";
     77            }
     78         }
     79     }
     80  return;
     81 }
     82 void fx(int wi)
     83 {
     84  char ja;
     85  for(int i=1;i<=(old[wi+1]-old[wi-1])-1;i++)
     86     {
     87      for(int j=1;j<=p2;j++)
     88         {
     89          if(p1==1)
     90            {
     91             ja=old[wi+1]-i;
     92             nw+=ja;
     93            }
     94          if(p1==2&&old[wi+1]>='a'&&old[wi+1]<='z')
     95            {
     96             ja=old[wi+1]-i;
     97             ja-='a';
     98             ja+='A';
     99             nw+=ja;
    100            }
    101          if(p1==2&&(old[wi+1]<'a'||old[wi+1]>'z'))
    102            {
    103       ja=old[wi+1]-i;
    104             nw+=ja;
    105            }
    106          if(p1==3)
    107            {
    108             nw+="*";
    109            }
    110         }
    111     }
    112  return;
    113 }
  • 相关阅读:
    LeetCode15 3Sum
    LeetCode10 Regular Expression Matching
    LeetCode20 Valid Parentheses
    LeetCode21 Merge Two Sorted Lists
    LeetCode13 Roman to Integer
    LeetCode12 Integer to Roman
    LeetCode11 Container With Most Water
    LeetCode19 Remove Nth Node From End of List
    LeetCode14 Longest Common Prefix
    LeetCode9 Palindrome Number
  • 原文地址:https://www.cnblogs.com/CYWer/p/4776371.html
Copyright © 2011-2022 走看看