回答編集履歴
3
コード追加
test
CHANGED
@@ -108,4 +108,4 @@
|
|
108
108
|
|
109
109
|
|
110
110
|
|
111
|
-
先に正規表現と`replace`を使ったコードを挙げましたが、質問にある`arrayStrings`のように、一文字ずつ読んで処理するforループで目的を達成しようとするなら、`count`のような
|
111
|
+
先に正規表現と`replace`を使ったコードを挙げましたが、(質問にある`arrayStrings`のように、)一文字ずつ読んで処理するforループで目的を達成しようとするなら、`count`のような文字と総出現回数のマップではなく、何らか別のデータ構造なりアルゴリズムを再考する必要があります。
|
2
コード追加
test
CHANGED
@@ -55,3 +55,57 @@
|
|
55
55
|
|
56
56
|
|
57
57
|
???? [サンプル](https://codepen.io/kilesa/pen/bGrzOpz?editors=0012) @codepen
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
### 追記
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
質問にある、作成途中のcountStringのコード
|
68
|
+
|
69
|
+
```javascript
|
70
|
+
|
71
|
+
function countString(str) {
|
72
|
+
|
73
|
+
let arrayStrings = str.split("")
|
74
|
+
|
75
|
+
let count = {};
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
for (let i = 0; i < arrayStrings.length; i++) {
|
80
|
+
|
81
|
+
let a = arrayStrings[i]
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
let elm = arrayStrings[i];
|
86
|
+
|
87
|
+
count[elm] = (count[elm] || 0) + 1;
|
88
|
+
|
89
|
+
}
|
90
|
+
|
91
|
+
return count
|
92
|
+
|
93
|
+
}
|
94
|
+
|
95
|
+
```
|
96
|
+
|
97
|
+
についてですが、ここまでで作られる`count` オブジェクトを使って、意図しているコード化を行うのは難しいです。
|
98
|
+
|
99
|
+
たとえば、`"bbbaacadee"`という文字列からは、`count` は以下のようなオブジェクトになります。
|
100
|
+
|
101
|
+
```
|
102
|
+
|
103
|
+
{ b: 3, a: 3, c: 1, d :1, e :2 }
|
104
|
+
|
105
|
+
```
|
106
|
+
|
107
|
+
ですが、このオブジェクトが持っているのは、各文字が与えられた文字列の中で出現する合計の回数です。なので、たとえば、文字`a` に対して `count`オブジェクトから`3` という数字が分かっても、この`3`の意味するところとして、どこかに`a`が3連続しているのかもしれないし、あるいは、文字列の先頭に1個の`a`があり、末尾に2連続の`a` があるのかもしれません。しかし、`"bbbaacadee"`での`a`の出現場所と各回数を見ると、これらのどちらでもありません。このように、`count` には、各文字がどこに(それぞれ各)何回という情報が抜け落ちてしまっています。ですので、この`count` から、目的とするコード化された文字列(入力が`bbbaacadee`ならば、`3b2a1c1a1d2e`)を得るのは難しいです。
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
先に正規表現と`replace`を使ったコードを挙げましたが、質問にある`arrayStrings`のように、一文字ずつ読んで処理するforループで目的を達成しようとするなら、`count`のような、文字と総出現回数のマップではなく、何らか別のデータ構造を再考する必要があります。
|
1
テキスト修正
test
CHANGED
@@ -52,8 +52,6 @@
|
|
52
52
|
|
53
53
|
"zzzzz => 5z => zzzzz" true
|
54
54
|
|
55
|
-
"zzzzz" "5z" "zzzzz" true
|
56
|
-
|
57
55
|
|
58
56
|
|
59
57
|
???? [サンプル](https://codepen.io/kilesa/pen/bGrzOpz?editors=0012) @codepen
|