文字列の最後の単語の長さを求めるアルゴリズムの詳細解析
1 /**
2 * 文字列の最後の単語の長さを返す関数
3 * @param s - 英字とスペースで構成された文字列
4 * @returns 最後の単語の長さ
5 */
6 function lengthOfLastWord(s: string): number {
7 // 文字列の末尾から開始して、スペースをスキップ
8 let i = s.length - 1;
9
10 // 末尾のスペースをスキップ
11 while (i >= 0 && s[i] === ' ') {
12 i--;
13 }
14
15 // 最後の単語の長さをカウント
16 let length = 0;
17 while (i >= 0 && s[i] !== ' ') {
18 length++;
19 i--;
20 }
21
22 return length;
23 }
| アプローチ | 時間計算量 | 空間計算量 | メモリ効率 |
|---|---|---|---|
| 逆向き走査(採用) | O(n) | O(1) | 最も効率的 |
| split() + pop() | O(n) | O(n) | 配列作成でメモリ消費 |
| trim() + lastIndexOf() | O(n) | O(n) | 文字列操作でオーバーヘッド |
| 正規表現 | O(n) | O(m) | パターンマッチング負荷 |