teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

テキスト修正

2018/11/23 21:12

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -5,13 +5,12 @@
5
5
  const text = "あかあかあかあかなあかなまやははまや";
6
6
  const results = new Set();
7
7
 
8
- for (let i=0; i < text.length-2; ++ i) {
8
+ for (let i=0; i < text.length-2; ++ i) {
9
- const m = /^(.+)\1/.exec(text.substr(i));
9
+ if (/^(.+)\1/.test(text.substr(i)))
10
- if (m)
11
- results.add(m[1]);
10
+ results.add(RegExp.$1);
12
11
  }
13
12
 
14
13
  console.log([...results]); // => ["あかあか", "かあ", "あか", "あかな", "は"]
15
14
  ```
16
15
 
17
- - **動作確認用のサンプル:** [https://jsfiddle.net/jun68ykt/38tuwh27/52/](https://jsfiddle.net/jun68ykt/38tuwh27/52/)
16
+ - **動作確認用のサンプル:** [https://jsfiddle.net/jun68ykt/38tuwh27/58/](https://jsfiddle.net/jun68ykt/38tuwh27/58/)

2

テキスト修正

2018/11/23 21:11

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -5,8 +5,8 @@
5
5
  const text = "あかあかあかあかなあかなまやははまや";
6
6
  const results = new Set();
7
7
 
8
- for (let n=0; n <= text.length-2; ++ n) {
8
+ for (let i=0; i < text.length-2; ++ i) {
9
- const m = RegExp(`^.{${n}}(.+)\1`).exec(text);
9
+ const m = /^(.+)\1/.exec(text.substr(i));
10
10
  if (m)
11
11
  results.add(m[1]);
12
12
  }
@@ -14,4 +14,4 @@
14
14
  console.log([...results]); // => ["あかあか", "かあ", "あか", "あかな", "は"]
15
15
  ```
16
16
 
17
- - **動作確認用のサンプル:** [https://jsfiddle.net/jun68ykt/38tuwh27/46/](https://jsfiddle.net/jun68ykt/38tuwh27/46/)
17
+ - **動作確認用のサンプル:** [https://jsfiddle.net/jun68ykt/38tuwh27/52/](https://jsfiddle.net/jun68ykt/38tuwh27/52/)

1

テキスト修正

2018/11/23 19:57

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -5,7 +5,7 @@
5
5
  const text = "あかあかあかあかなあかなまやははまや";
6
6
  const results = new Set();
7
7
 
8
- for (let n=0; n < text.length-2; ++ n) {
8
+ for (let n=0; n <= text.length-2; ++ n) {
9
9
  const m = RegExp(`^.{${n}}(.+)\1`).exec(text);
10
10
  if (m)
11
11
  results.add(m[1]);
@@ -14,4 +14,4 @@
14
14
  console.log([...results]); // => ["あかあか", "かあ", "あか", "あかな", "は"]
15
15
  ```
16
16
 
17
- - **動作確認用のサンプル:** [https://jsfiddle.net/jun68ykt/38tuwh27/44/](https://jsfiddle.net/jun68ykt/38tuwh27/44/)
17
+ - **動作確認用のサンプル:** [https://jsfiddle.net/jun68ykt/38tuwh27/46/](https://jsfiddle.net/jun68ykt/38tuwh27/46/)