【蓝桥杯每日一题】3.16 字符串展开

原题链接:P1098字符串的展开

本体为模拟题,不过情况比较复杂,考验细节

注意点:

  • 连续’-',可能会出现一些奇怪的东西,例: 7 − − − − 9 a − b 7----9a-b 79ab(应为 2 − − − 9 a b 2---9ab 29ab)
  • 末尾/开头的’-',如: − − 2 − 9 − − --2-9-- 29(应为 − − 23456789 − − --23456789-- 23456789
  • 确定’-'两边同时为字母或者数字并且左边数字比较小
  • 连续字符 如: a − b − c − d − e − f − g a-b-c-d-e-f-g abcdefg(应为: a b c d e f g abcdefg abcdefg

使用到的库函数介绍:

  1. isalpha(x) 判断x是否为字母
        
    isdigit(x) 判断x是否为数字
    
    islower(x) 判断x是否为小写字母
    
    isupper(x) 判断x是否为大写字母
    
    isalnum(x) 判断x是否为字母或数字
    
    ispunct(x) 判断x是否为标点符号
    
    isspace(x) 判断x是否为空格
    //如果x符合条件,均会返回true,否则返回false
    
    toupper(x) 如果x是小写字母,将其转换成大写字母
    
    tolower(x) 如果x是大写字母,将其转换成小写字母
    
  2. s.erase(x,y) 表示将字符串s从x位置起删除y个字符
    
    s.insert(x,y) 表示将字符串y(或字符y)插入到s的x位置处
    
    s.push_back(x) 表示在s的末尾插入字符x
    
    reverse(s.begin(),s.end()) 将字符串s翻转
    

笔者有点懒(bushi),省了一些手写的时间

AC代码:

#include
using namespace std;

int p1,p2,p3;
string s;
	
int main(){

	cin>>p1>>p2>>p3;
	cin>>s;
	for(int i=1;i

你可能感兴趣的:(每日一题,蓝桥杯,算法,c++,c语言)