Topcoder文字系の問題でよく使うコード&英語

topcoder-string.png

文字列を検索する

まずfindが思いつくが、あまり使用されていない。
string.compareとか
こういうのとか

if(str.substr(0,5)!="/msg ")

文字の配列を長い順にソートする

「長い方が優先」とか問題に書いてあるときに使える

bool orderbylength(const string& firstElem, const string& secondElem) {
    return firstElem.size() > secondElem.size();
}
sort(usernames.begin(),usernames.end(),orderbylength);

全部小文字にする

問題文にcase insensitive つまり「大文字か小文字かは気にしない」て書いてあるときに使えるコード

transform(input.begin(), input.end(), output.begin(), ::tolower);

tolowerというのはそういう関数がすでに用意されている。::をちゃんとつけないとstdの名前空間と衝突してエラーになる。
Visual Studioのコンパイラではエラーにならないけど、TopCoderのコンパイラではエラーになる

読むのが困難した英語

- Elements of usernames will not have leading, trailing, or double spaces.

leading 左寄せ
trailing 右寄せ
double space 真ん中寄せ
という意味でした。

サポートサイト Wikidot.com