10月20日 字符串展开

题目

分析

      枚举‘-’号位置就好了

代码

 1 #include<iostream>
 2 using namespace std;
 3 int main ()
 4 {
 5     int p1,p2,p3;
 6     cin>>p1>>p2>>p3;
 7     string s,c;
 8     cin>>s;
 9     int kk=0;
10     for (int i=0;i<s.size();i++)
11       if (s[i]=='-')
12       {
13           c+=s[i];
14           kk=i+1;
15       }
16       else break;
17     for (int i=kk;i<s.size();i++)
18     {
19         if (s[i]!='-')
20           c+=s[i];
21         else
22         {
23             if (s[i+1]=='-')
24             {
25                 c+="--";
26                 i++;
27                 continue;
28             }
29             if (s[i+1]<=s[i-1]||(s[i-1]>='0'&&s[i-1]<='9'&&s[i+1]>'9'))
30             {
31                 c+='-';
32                 continue;
33             }
34             if (s[i-1]+1==s[i+1])
35                continue;
36             int a=s[i-1],b=s[i+1];
37             string t;
38             if (p1==1)
39             {
40                 if (a>='A'&&a<='Z')
41                    a=a-'A'+'a';
42                 if (b>='A'&&b<='Z')
43                    b=b-'A'+'a';
44                 for(int i=a+1;i<b;i++)
45                   for (int j=1;j<=p2;j++)
46                     t+=i;
47             }
48             if (p1==2)
49             {
50                 if (a>='a'&&a<='z')
51                   a=a-'a'+'A';
52                 if (b>='a'&&b<='z')
53                   b=b-'a'+'A';
54                 for(int i=a+1;i<b;i++)
55                   for (int j=1;j<=p2;j++)
56                     t+=i;
57                 
58             }
59             if (p3==2)
60             {
61                 string tt;
62                 for (int i=t.size()-1;i>=0;i--)
63                    tt+=t[i];
64                 t=tt;
65             }
66             if (p1==3)
67             {
68                 if (a>='a'&&a<='z')
69                   a=a-'a'+'A';
70                 if (b>='a'&&b<='z')
71                   b=b-'a'+'A';
72                 for(int i=a+1;i<b;i++)
73                   for (int j=1;j<=p2;j++)
74                     t+='*';
75             }
76             c+=t;
77         }
78     }
79     cout<<c;
80 }
为何要逼自己长大,去闯不该闯的荒唐
原文地址:https://www.cnblogs.com/zjzjzj/p/9860792.html