Comment detail

文字列の反転(括弧の対応を保存) (Nested Flatten)
 文字列を反転させても括弧の対応を保存するには、括弧を反対向きの括弧と入れ替えれば目的を達成出来ます。
 引数として受け取った文字列を文字配列に変換してループを回しています。
 ループごとに文字を評価して、括弧を反対向きの括弧に変換して戻り値の先頭に挿入しています。文字が括弧でない場合はそのまま挿入しています。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Function reverseString2(ByVal Str As String) As String
    Dim R As String = ""
    For Each Chr As Char In Str.ToCharArray()
        Dim InsertChar As Char
        Select Case Chr
            Case "("c
                InsertChar = ")"c
            Case ")"c
                InsertChar = "("c
            Case "{"c
                InsertChar = "}"c
            Case "}"c
                InsertChar = "{"c
            Case "["c
                InsertChar = "]"c
            Case "]"c
                InsertChar = "["c
            Case Else
                InsertChar = Chr
        End Select
        R = R.Insert(0, InsertChar) '処理に掛かった時間(312500Ticks) 処理が速いこちらのコードを採用
        'R = InsertChar & R '処理に掛かった時間(468750Ticks) 可読性ならこっちかな
    Next
    Return R
End Function
う〜ん。括弧の対応を認識する部分をどう書くかを問うつもりで作成したお題だったのですが。。。
たしかに、「対応のとれていない括弧文字は向きを変えてはいけない」とはどこにも書いてない。
対応のとれていない時の動作一例を示しただけでは、不十分だったかな。

曖昧さのない問題をちゃんと作るの難しいですね。
>入力文字列では対応の取れている括弧の内側には対応の取れない括弧文字はないと解釈してください。
というところを、入力文字列内のカッコは対応が取れているものとする
という意として認識していました。きちんと例も確認するべきでした。
そうなると、括弧版DOMを構築すれば目的を達成出来そうだと思いましたが、僕には難しいです。
出直してきます。

Index

Feed

Other

Link

Pathtraq

loading...