基礎的な線形探索の問題!
問題概要
アルファベット文字からなる文字列 が与えられる。次の条件を満たすかどうかを判定せよ。
- の先頭の文字は大文字である
- の先頭以外の文字はすべて小文字である
考えたこと
まず、先頭の文字が小文字である場合は "No" である。これ以降、先頭の文字は大文字であるとして考えよう。
このとき、文字列 S
の各文字 S[0]
, S[1]
, S[2]
, ... のうち、先頭の S[0]
を除いた S[1]
, S[2]
, ... がすべて小文字であるかどうかを判定すればよい。
コード
#include <bits/stdc++.h> using namespace std; int main() { string S; cin >> S; if (islower(S[0])) { // 先頭が小文字の場合は問答無用で "No" である cout << "No" << endl; return 0; } bool res = true; for (int i = 1; i < S.size(); ++i) { if (isupper(S[i])) res = false; } if (res) cout << "Yes" << endl; else cout << "No" << endl; }