Official

A - camel Case Editorial by mechanicalpenciI


答えを求めるためには、\(S\) の文字を \(1\) 文字ずつ見ていって大文字かどうかを判定すれば良いです。大文字であるかを判定するにはすでに用意されている標準ライブラリやメソッドを用いれば良いです。

標準ライブラリやメソッドを用いる方法については言語次第ですが、例えば c++ であれば関数 std::isupper, Python であれば文字列に対する isupper メソッドなどを使用する事ができます。

また、char型 に対して大小比較を行う時、比較はその文字に対応する文字コードの比較によって行われますが、多くの文字コードにおいては大文字と小文字の文字コードはそれぞれまとまっている(例えば、ASCIIやUnicode ではA-Z\(65\)-\(90\), a-z\(97\)-\(122\) に対応しています)ため、文字列 \(S\) の各文字 \(S_i\) に対する条件を 「 ‘A’ \(\leq S_i\) かつ \(S_i\leq\)‘Z’」 として判定すれば大文字の判定を行う事ができます。

これらの方法によって、この問題を解く事ができます。

c++ による実装例 1 :

#include <bits/stdc++.h>
using namespace std;

int main() {
	int n;
	string s;

	cin>>s;
	n=s.size();
	for(int i=0;i<n;i++){
	    if(isupper(s[i])){
                cout<<(i+1)<<endl;
            }
	}

	return 0;
}

c++ による実装例 2 :

#include <bits/stdc++.h>
using namespace std;

int main() {
	int n;
	string s;

	cin>>s;
	n=s.size();
	for(int i=0;i<n;i++){
	    if(('A'<=s[i])&&(s[i]<='Z')){
                cout<<(i+1)<<endl;
            }
	}

	return 0;
}

Python による実装例 :

s=input()

for i in range(len(s)):
    if(s[i].isupper()):
        print(i+1)

posted:
last update: