単語を連続する英数字の文字列として定義します。単語は、英数字以外の文字で解析されます。 Ex。C++を使用して文字列内の英数字の数を最も効率的にカウントする方法
「こんにちは、私の第一名@ケビン@です:)」出力
:6
私は知っているが、単純にforループを使用して文字列を通過する可能性がありますが、何を返すために最も効率的な方法だろう正しい出力はC++ 11ライブラリの全範囲を使用していますか?
私の現在の反復:
int findWords(string line) {
regex AN("[[:alnum:]]");
int count = 0;
bool state = false;
for (char c : line) {
string s(1, c);
bool match = regex_match(s, AN);
if (match && !state) {
state = true;
}
else if (!match && state) {
count++;
state = false;
}
else {
continue;
}
}
if (state == true) { //won't count last word otherwise
count++;
}
return count;
}
、あなたは「単にforループを使用して文字列を通過する」、または同等のプロセスなければなりません。そして、他の名前でバラ... –
あなたは文字列を通して反復を避けることができると思いますか?さらに重要なことは、あなたが試したことは何ですか? – Nim
C++は文字列を反復処理するのに本当に良いです。それはほとんど確実に最速になるでしょう。ちなみに、その文字列には実際には6つの英数字のシーケンスがありますか? –