Ruby程序/问题

Dha*_*udi 0 ruby

给定一串字符作为输入,不使用正则表达式或模式匹配,如何获取输出,如果字符匹配aaa应输出1,如果字符匹配aBa应输出2.(注意:不应该重新处理字符所以在处理相同的输入时输出"1"和"2")

例如:

给'aaBaBaaaBaaa'它应该输出211

给'aaaBaBaaaaBBaBaBa'它应该输出1212

提前致谢.

kej*_*len 6

听起来像你想要一台状态机:

require 'statemachine'

state_machine = Statemachine.build do
  trans :_, :a, :a
  trans :_, :B, :_
  trans :a, :a, :aa
  trans :a, :B, :aB
  trans :aa, :a, :_, 'print 1'
  trans :aa, :B, :aB
  trans :aB, :a, :_, 'print 2'
  trans :aB, :B, :_
end

"aaBaBaaaBaaa".each_char do |i|
  state_machine.process_event(i)
end

state_machine.reset
puts

"aaaBaBaaaaBBaBaBa".each_char do |i|
  state_machine.process_event(i)
end
Run Code Online (Sandbox Code Playgroud)