牛客网代码练习——BM83 字符串变形

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
void trans(string a, int n);

string res;
int main() {
    char a[1000000];
    int n;
    gets_s(a);
    cin >> n;
    trans(a, n);
    cout << res<<endl;
    return 0;
}

void trans(string s, int n) {
    if (n == 0) {
        res = s;
        return;
    }
        
    
    for (int i = 0; i < n; i++) {
        //大小写转换
        if (s[i] <= 'Z' && s[i] >= 'A')
            res += s[i] - 'A' + 'a';
        else if (s[i] >= 'a' && s[i] <= 'z')
            res += s[i] - 'a' + 'A';
        else
            //空格直接复制
            res += s[i];
    }
    //翻转整个字符串
    reverse(res.begin(), res.end());
    for (int i = 0; i < n; i++) {
        int j = i;
        //以空格为界,二次翻转
        while (j < n && res[j] != ' ')
            j++;
        reverse(res.begin() + i, res.begin() + j);
        i = j;
    }
}

ACM模式 

测试用例:

This is a sample

16

笔记:

C++字符串输入输出

输入:

scanf("%s",s) 遇到空字符直接停止

cin>>s 遇到空字符直接停止

gets_s(a)  对空字符不敏感(可以读取空字符),遇到“\0”停止

输出:

printf(“%s”,s) 可以输出空字符,遇到“\0”停止

cout<<s<<endl;可以输出空字符,遇到“\0”停止

reverse()函数可以对字符串进行反转操作

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值