Official
B - Perfect String Editorial by PCTprobability
for 文のようなループ処理を用いてすべての条件を満たすかどうかを調べます。
全ての文字を見て、大文字があるかどうかを\(\mathrm{O}(|S|)\) で判定します。
同様に、全ての文字を見て、小文字があるかどうかを\(\mathrm{O}(|S|)\) で判定します。
\(1 \le i < j \le |S|\) を満たす整数の組 \(i,j\) に対して、\(S_i \neq S_j\) であるかどうかを \(\mathrm{O}(|S|^2)\) で判定します。
C++ であれば、大文字であるかどうかは ‘A’ <= s[i] && s[i] <= ‘Z’
や isupper 関数などを使えば判定できます。
#include <bits/stdc++.h>
using namespace std;
int main() {
string s;
cin >> s;
bool big = false,small = false;
for(int i = 0; i < s.size(); i++){
if(isupper(s[i])) big = true;
else small = true;
}
bool diff = true;
for(int i = 0; i < s.size(); i++){
for(int j = i + 1; j < s.size(); j++){
if(s[i] == s[j]) diff = false;
}
}
if(big && small && diff) cout << "Yes" << endl;
else cout << "No" << endl;
}
posted:
last update: