题解 | #首字母大写#

首字母大写

https://www.nowcoder.com/practice/91f9c70e7b6f4c0ab23744055632467a

#include<iostream>
#include <iomanip>
#include <algorithm>
#include <valarray>
#include "stdio.h"

using namespace std;

int main() {
    string a;

    getline(cin, a);
    bool flag;
    if (a[0] >= 'a' && a[0] <= 'z') {       //判断整个字符串第一个字符是不是字母,是的话为true
        flag = true;
    } else {
        flag = false;
    }
    
    for (int i = 0; i < a.size(); ++i) {
        if (a[i] >= 'a' && a[i] <= 'z') {   //如果遍历到的是小写字母
            if (flag) {     // 如果需要修改
                if (i == 0|| !(a[i - 1] >= '0' && a[i - 1] <= '9') ) {  //判断其上一个字符是不是数字(或者i是否为0),不是的话再小写变大写,不然不动
                    a[i] = a[i] - 'a' + 'A';
                }
                flag = false;   //不论有没有修改,后面的字符都不会再是第一个小写字母了
            }
        } else if (i != 0) {    //如果遍历到的不是小写字母,看其是不是数字或大写字母
            if (!(a[i] >= '0' && a[i] <= '9') &&  !(a[i] >= 'A' && a[i] <= 'Z')) {  //不是的话说明是空白符
                flag = true;
            }
        } else {
            continue;
        }
    }
    cout << a;
    return 0;
}

全部评论

相关推荐

头像
04-09 14:29
Java
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务