コンパイラかく語りき

import { Fun } from 'programming'

【JavaScript】splitとjoinで不純物探知

stringクラスのsplitとarrayクラスのjoinを使えば、不純物探知ができるよねというお話。

 

以下のコードを例に取ります。

gist2676ae0c57f3323742be

 

最初にhelloがたくさん並んだ文字列があります。一見、すべてhelloに見えますね。

 

次に、split('hello').join('')をしています。

これは文字列を配列化して、さらに文字列に戻しています。

配列化の際に、splitの引数で文字列を区切る事ができます。

 

splitの詳細はこちらをご参照ください。

chuckwebtips.hatenablog.com

 

その区切り文字としてhelloを指定すると、つまりhelloを削ぎ落とすことができます。

 

'hello,hello,hello'

たとえば上記の文字列にsplit(',')とすると、

['hello', 'hello', 'hello']となります。

これは、カンマを捨てたことに等しいです。

 

この仕様を利用したのが、先述のhelloの削ぎ落としです。これよって、不純物のみが抽出されます。

その上でjoinを使って配列要素を連結します。これが不純物の文字列です。

この文字列の長さが0ならば、つまり1文字もなければ不純物は無いということになります。

 

 

参考:

このテクニックは、競技プログラミングのこちらの回答を見て発見しました。感謝です。

abc023.contest.atcoder.jp