条件分岐とテストケースの問題。こういう問題はテストケースが面倒くさい。
解説によれば、面倒くさくない!
<、>、<-、<=、->、=>、・・・が含まれるか indexOfでチェックして一番長いのを返せばよい!
矢軸の長さを0から最大長までループすれば簡単!やられた!
以下はくそまじめにやる方法。
単純に文字を読んでいき、今読んでいる文字が矢印の一部になると想定して、現在の左端の矢尻"<>"と矢軸"-="をそれぞれchar tail, bodyに覚えておく(tail, bodyはない場合もあるので' 'も可)。また、今の矢軸の長さも覚えておく(bodylength)
基本的に以下のようになるが、うまくまとめるとIF文は少なくなる。
面倒くさい。
tail body now
< - > bodylength+1で終了、bodylength=0, body=' ' tail = '>'
< - < bodylength+1で終了(←)、bodylength=0, body=' ' tail = '<'
< - - bodylength++
< - = bodylength+1で終了(←)、bodylength=1, body='=', tail=' ',
< = > bodylength+1で終了、bodylength=0, body=' ' tail = '>'
< = < bodylength+1で終了(←)、bodylength=0, body=' ' tail = '<'
< = - bodylength+1で終了(←)、bodylength=1, body='-', tail=' ',
< = = bodylength++
< > bodylength+1で終了(<)、bodylength=0, body=' ' tail = '>'
< < bodylength+1で終了(<)、bodylength=0, body=' ' tail = '<'
< - bodylength++、body='-'
< = bodylength++、body='='
> - > bodylength+1で終了(→)、bodylength=0, body=' ' tail = '>'
> - < bodylength=0, body=' ' tail = '<'
> - - bodylength++
> - = bodylength=1, body='=', tail=' ',
> = > bodylength+1で終了(→)、bodylength=0, body=' ' tail = '>'
> = < bodylength=0, body=' ' tail = '<'
> = - bodylength=1, body='-', tail=' ',
> = = bodylength++
> >
> <
> -
> =
- >
- <
- -
- =
= >
= <
= -
= =
>
<
-
=