1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AtCoderログ:0065 - ABC 071 B

Last updated at Posted at 2021-08-09

問題

問題文

英小文字からなる文字列 $S$ が与えられます.$S$ に現れない英小文字であって,最も辞書順(アルファベット順)で小さいものを求めてください.ただし,$S$ にすべての英小文字が現れる場合は,代わりに None を出力してください.

制約

・$1 \le |S| \le 10^5$ ($|S|$ は文字列 $S$ の長さ)
・$S$ は英小文字のみからなる.

収録されている問題セット

回答

回答1 (AC)

文字列 s で使用されていない文字を聞かれているので、文字列 s で使用されている文字を set 型の変数 letter に保持し、アルファベット列 "abcdefghijklmnopqrstuvwxyz" のうちで最初に使用されていない文字を出力すれば良いでしょう。"None" を出力するのは文字列 s で全てのアルファベットが使用されているときなので、letterのサイズが26になっているときです。コードは以下のようになりました。

abc071b-1.cpp
#include <bits/stdc++.h>
using namespace std;

int main() {
  string s;
  cin >> s;

  set<char> letter;
  for ( int i=0; i<(int)s.size(); i++ ) {
    letter.insert(s.at(i));
  }

  if ( letter.size()==26 ) {
    cout << "None" << endl;
  } else {
    string alphabet="abcdefghijklmnopqrstuvwxyz";
    for ( int i=0; i<26; i++ ) {
      if ( s.find(alphabet.at(i))==-1 ) {
        cout << alphabet.at(i) << endl;
        break;
      }
    }
  }
}

調べたこと

AtCoder の解説コンテスト全体の解説

アルファベットと文字コードを変換する方法を使用していました。

リンク

前後の記事

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?