blog

アルゴリズムレビュー:文字列の逆引き

余分な領域を別の配列に割り当ててはいけません,入力配列をその場で修正し,O個の余分な領域を使って問題を解かなければなりません. 文字列を反転させるためにダブルポインタを使います。 左<右の場合、入れ替...

Aug 5, 2020 · 2 min. read
シェア

トピック分析

入力文字列を反転させる関数を書きなさい。入力文字列は文字配列 char[] として与えられます。

別の配列のために余分な領域を割り当てないでください。問題を解決するためには、O(1)個の余分な領域を使って、入力配列をその場で修正しなければなりません。

例1:

 ["h","e","l","l","o"]
 ["o","l","l","e","h"]

例2:

 ["H","a","n","n","a","h"]
 ["h","a","n","n","a","H"]

トピックのイラスト

文字列を反転させるにはダブル・ポインタを使います。

入力文字列が ["h", "e", "l", "l", "0"] であるとします。

  • leftとrightはそれぞれ最初と最後の要素を指すように定義します。
  • 左<右の場合はスワップ。
  • 入れ替え, 左++
  • 左まで== right

プロセスを以下に示します:

Go言語の例

以上の分析に基づき、次のような解が得られます:

//Go
func reverseString(s []byte) {
	left := 0
	right := len(s) - 1
	for left < right {
		s[left], s[right] = s[right], s[left]
		left++
		right--
	}
}

私が書いたすべての解答と各問題の完全な図解をeBookにまとめました。

Read next

小説のプロジェクトを始めるとき、どうすれば競争力をつけられるだろうか?

一部の人々は、小説をやって、今猫ああ、出発点ああ、トマトああなどのような大火災アプリの様々な、彼らは競争力がほとんどないようだと感じています。どのように他の人と比較するために、人々は無料、それを払ってください。それを無料にして、今の人はとても熱くて、彼らは戦うことができないようです。しかし、実際には、小説は、このことは、限り、ユーザーの体をキャプチャするように

Aug 5, 2020 · 3 min read