[プログラミングの質問]賢い編集Golang・ステート・マシンを考えたことはありません

[質問のプログラミング]巧妙な編集を考えたことはありません

制限時間:C / C ++ 1秒、他の言語でのスペースの制約の2秒:C / C ++ 32M、64M、他の言語
、私は王のハンマー、出版社のためのエディタです。私は多くの人が毎日、スペルの間違いを修正する必要があるため、この作業は、非常に迷惑です、英語への原稿提出の校正を担当していました。しかし、良い人々は、常に通常の作業で真実を見つけることができます。私はショートカットがスペルミス見つけることが見つかりました:

  1. 一緒に同じ3つの文字、スペルミスされている必要があり、千百万の除去:このようhelllo - >こんにちは
  2. 文字(AABB型)の二対が一緒に連結されているように、エラーをスペルする必要があり、千百万文字第二の対を削除します。そのようなhellooを - >ハロー
  3. 上記ルー​​ル優先AABBとBBCCはスペルミスがあるAABBを修復する優先権を与えるべきであるが、それは、AABBCCある場合、結果はAABCCあると、一致「左から右」

私は特にニャー天才です!Lanxiangで学ん私は、この原則は、作業効率から離陸、自動検証を書いたによると、掘削機やプログラミングを持っていました。もうすぐ、私は、取締役会会長になった、CEOとしての白フォーマイカと結婚、人生の頂点にかかっただろう、それについて興奮すべての少しを考えます!
私はトレッキングトレッキングライン乾燥することにより行、行単位で、人のラインならば、サブポイント、勤勉、私は解雇、そしてボスを離れる前に私に言った:.「専用にする事をやって思ったことはありません。そうでない場合は、ドライ彼の党の何行目は、彼の党はないトレッキングないんではないでしょう。「私は今、トランス活況を呈し、全人です......

質問に耳を傾けてください:スレッジハンマー自動校正プログラムを実感してください

入力説明:
最初の行番号N、実施備えると共に検証するために、この文字列の数を含みます。

N行に続いて、それぞれのパリティ文字列であるように作用します。

出力説明:
N行、修復すべき文字列を含む各行。
例1つの
入力

2
helloo
wooooooow

輸出

こんにちは
woow

思考

ここで私は、ステートマシンを使用する方法ではなく、最適なソリューション、ライン上で見て、ちょうど習慣的な記録ではあります。
その他、ダブルポインタ現場修正されたアルゴリズムは、より優れて使い他人をコピーし、あなたは自分の主題領域の学習にコメントすることができます。

答え

package main
 
import "fmt"
 
func main() {
    var n int
    var str string
    fmt.Scan(&n)
    for ;n>0;n--{
        fmt.Scan(&str)
        if len(str)<=2{
            fmt.Println(str)
        }
        flag:=0
        tmp:=string(str[0])
        for i:=1;i<len(str);i++{
            switch flag {
            case 0:
                tmp=tmp+string(str[i])
                if str[i]==str[i-1]{
                flag=1
            }
            case 1:
                if str[i]!=str[i-1]{
                    tmp=tmp+string(str[i])
                    flag=2
                }
            case 2:
                if str[i]!=str[i-1]{
                    tmp=tmp+string(str[i])
                    flag=0
                }
            }
        }
        fmt.Println(tmp)
    }
}
公開された38元の記事 ウォンの賞賛0 ビュー1031

おすすめ

転載: blog.csdn.net/Cyan1956/article/details/104804609