問題
Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the length of last word in the string.
If the last word does not exist, return 0.
Note: A word is defined as a character sequence consists of non-space characters only.
Example:
Input: "Hello World"
Output: 5
复制代码
翻訳:
アッパー/小文字と空のスペース文字「」組成物による文字列s、与えられた文字列の最後の単語の長さを返します。
最後の言葉が存在しない場合は、0が返されます。
注意:単語が非空白文字のように定義された文字のシーケンスです。
例:入力:「Hello World」の出力:最大値と(少なくとも一桁を含む)は、隣接するサブアレイとその戻りを有し、見つかった整数アレイ5所定数。
問題解決のためのアイデア
この質問は、私たちは言葉の数ではなく、統計ヌル文字、ヌル文字が再カウント、文字を横断し、前の操作の数を記録し、空の文字列に次の場合は、以前の結果に従う限り、非常に簡単です。もちろん、この方法は、直接文字列を達成するために使用することができます。
問題解決のアプローチ
-
次のようにコードを編集するために私たちの考えによると、
if (s == null || "".equals(s)) { return 0; } int count = 0; int lastCount = count; for (int i = 0; i < s.length(); i++) { if (s.charAt(i) == ' ') { lastCount = count == 0 ? lastCount : count; count = 0; continue; } count++; } return count == 0 ? lastCount : count; 复制代码
時間複雑:mのプログラムサイクル(N)=(N)Fそう = N; そうO(F(N))= O(N)、 すなわち、T(N)= O(N )
宇宙複雑:スペースの複雑さはO(1)となるように、プログラムは、余分なスペースを使用していません。
-
次のように、文字列を借りる方法
if (s == null || "".equals(s)) { return 0; } s = s.trim(); return s.length() - s.lastIndexOf(" ") - 1; 复制代码
時間複雑:mのプログラムサイクル(N)=(N)Fそう = N; そうO(F(N))= O(N)、 すなわち、T(N)= O(N )
宇宙複雑:スペースの複雑さはO(1)となるように、プログラムは、余分なスペースを使用していません。
概要
状況に特に注意を払って苦情上記のように、この問題の近似解、内容は非常に簡単です、ちょうど最後の非空の文字列の文字長を取得し、最後にすべてのNULL文字、それがああ最前線にあります。
ます。https://juejin.im/post/5cfa89bff265da1b614fe9b7で再現