文字列探索(1)

10月 25th, 2008 admin Posted in Ruby, アルゴリズムとデータ構造 |

久しぶりに「アルゴリズムとデータ構造シリーズ」です。今回は第9章「浮動小数点数と数値計算」です。

文字列探索

このアルゴリズムについては説明は必要ないでしょうね。文字列の探索はコンピュータがビジネスに欠かせなくなってしまった今日では非常に重要になっています。
第2章のあたりでサーチについては学びましたが、効率の良いバイナリサーチは文字列探索の場合はつかえません。なぜならバイナリサーチはあらかじめサーチ対象をソートしておく必要があったからです。
では、どのような方法があるのでしょうか。この章は3つぐらいコードが必要で正直面倒ですが順番にやっていきたいと思います。

まず今回はもっとも単純ですが、単純がゆえにバグもおこりにくいということから最も使われているアルゴリズムからです。ようするに最初から順番に調べていくという方法です。

RUBY:
  1. def simple_search(text,pattern)
  2.  text.length.times do |n|
  3.     print "  text:" + text + "\npattern:"
  4.     print " " * n
  5.     print pattern
  6.    
  7.     flag = true
  8.     pattern.length.times do |i|
  9.       flag = false if (pattern[i] != text[n + i])<span id="more-248"></span>
  10.     end
  11.     next if flag == false
  12.     return n
  13.  end
  14.  return -1
  15. end
  16.  
  17.  
  18.  
  19. text = ARGV[0]
  20. pattern = ARGV[1]
  21.  
  22. unless simple_search(text, pattern) == -1
  23.   p 'found'
  24. else
  25.   p 'not found'
  26. end

まとめ

短い文章の検索ならこれで十分ということでしょうね。
次回からは別のアルゴリズム2つに挑戦します。

※このシリーズは私がRubyでアルゴリズムとデータ構造を基礎から学ぶ記録です。全体の目次はこちらへ。

One Response to “文字列探索(1)”

  1. [...] 文字列探索(1) [...]

Leave a Reply