LeetCodeコレクション(XIV) - 最後のWordの58タイトルの長さ

問題

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所定数。


問題解決のためのアイデア

この質問は、私たちは言葉の数ではなく、統計ヌル文字、ヌル文字が再カウント、文字を横断し、前の操作の数を記録し、空の文字列に次の場合は、以前の結果に従う限り、非常に簡単です。もちろん、この方法は、直接文字列を達成するために使用することができます。

問題解決のアプローチ

  1. 次のようにコードを編集するために私たちの考えによると、

     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)となるように、プログラムは、余分なスペースを使用していません。

  2. 次のように、文字列を借りる方法

    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で再現

おすすめ

転載: blog.csdn.net/weixin_34414650/article/details/91445044