2 条题解

  • 0
    @ 2024-10-14 17:40:47
    #include<bits/stdc++.h>
    using namespace std;
    int p1,p2,p3;
    string s1,s2;
    int st;
    int main()
    {
    	cin>>p1>>p2>>p3;
    	cin>>s1;
    	for(int i=1;i<s1.size()-1;i++){//排除第一个和最后一个的位置,防止访问越界
    		if(s1[i]=='-'){
    			int a=s1[i-1], b=s1[i+1];
    			if(b>a){
    				if((a>=97&&a<=122&&b<=122&&b>=97)||(b<=57&&b>=48&&a>=48&&a<=57)){//同数或同字母
    				s2.clear(); st=b-a;
    				if(st==1){
    					s1.replace(i,1,"");
    					continue;
    				}
    					//需注意,只有字母才能被大小写函数置换,数字不会受到影响
    				if(p1==1){for(int j=1;j<st;j++){ s2+=string(p2,tolower(a+j));}}
    				if(p1==2){for(int j=1;j<st;j++){ s2+=string(p2,toupper(a+j));}}
    				if(p1==3){ for(int j=1;j<st;j++){ s2+=string(p2,'*'); } }
    				if (p3 == 2) reverse(s2.begin(), s2.end());
    				s1.replace(i,1,s2);//替换
    				}
    			}
    		}
    	}
    	cout<<s1;
    	return 0;
    }
    
    • 0
      @ 2024-9-23 9:16:15

      字符串模拟

      #include <bits/stdc++.h>
      using namespace std;
      const int N = 1e5 + 1;
      int p1, p2, p3;
      string str, ans;
      int main() {
        cin >> p1 >> p2 >> p3 >> str;
        for (int i = 0; i < str.size(); i++) {
          if (str[i] == '-' && i > 0 && i + 1 < str.size() && str[i - 1] < str[i + 1]) {
            char a = str[i - 1], b = str[i + 1];
            if (isdigit(a) && isdigit(b) || isalpha(a) && isalpha(b)) {
              if (a + 1 < b) {
                string tem;
                for (int c = a + 1; c < b; c++) {
                  if (p1 == 1) tem += string(p2, tolower(c));
                  if (p1 == 2) tem += string(p2, toupper(c));
                  if (p1 == 3) tem += string(p2, '*');
                }
                if (p3 == 2) reverse(tem.begin(), tem.end());
                ans += tem;
              }
            } else ans += str[i];
          } else ans += str[i];
        }
        cout << ans;
        return 0;
      }
      
      
      • 1

      信息

      ID
      1265
      时间
      1000ms
      内存
      512MiB
      难度
      4
      标签
      递交数
      109
      已通过
      49
      上传者