私はUVa#494で遊んでいて、以下のコードでそれを解決することができました:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
class Main {
public static void main(String[] args) throws IOException{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String line;
while((line = in.readLine()) != null){
String words[] = line.split("[^a-zA-z]+");
int cnt = words.length;
// for some reason it is counting two words for 234234ddfdfd and words[0] is empty
if(cnt != 0 && words[0].isEmpty()) cnt--; // ugly fix, if has words and the first is empty, reduce one word
System.out.println(cnt);
}
System.exit(0);
}
}
単語を分割するために正規表現"[^a-zA-z]+"
を作成したので、たとえば文字列abc..abc
またはとして分割するabc432abc
必要があります["abc", "abc"]
。ただし、文字列を試してみると432abc
、結果として次のようになります。["", "abc"]
からの最初の要素words[]
は単なる空の文字列ですが、は。だけであると期待していました["abc"]
。この正規表現がこの場合の最初の要素を私に与える理由がわかりません""
。