The necessary and sufficient conditions for a single output system to be state equivalent to a nonlinear observer canonical form have been found by Krener and Isidori. In this paper, we give new necessary and sufficient conditions, in the form of algorithm, which are more suitable for computer programming. Our proof is constructive and not only the state transformation but also the nonlinear observer canonical form is contained. Also, the sufficient part of our proof does not rely on Frobenius Theorem.