解决用户在搜索引擎乱输入,无空格或间接输入,进行分割
解决用户在搜索引擎乱输入,无空格或间接输入,进行分割
现在经常会有一个用户在搜索引擎中输入不加空格或者分割符的,近来写了一个小小的代码,用一个小字库,来匹配用户输入的单词或者是其他的东西,最后以空格分割输出。以下是一个简单的ruby程序。利用hash进行索引,查询速更快。
$stack = [] $scan_str = File.read("#{File.dirname(__FILE__)}/word.txt").scan(/(.*)\[/) $a = "" #用来装不能分割单词的情况 def get_word puts "请输入需要搜索的内容" sum = 0 #for i in 0..100 str = gets.chomp() #str = "ukcfefweiufweifhf" t1 = Time.new h = Hash.new() for i in 0..$scan_str.length-1 h["#{$scan_str[i][0]}"]=1 end if h.key?str puts "你搜索的结果为:#{str}" return else i = 0 #递归开始的位置 j = 0 #数组下标 k = 1 #每次开始的位置 fun(str,i,j,k) if $a.length>0&&$stack.length==0 puts "输入的单词可能错误哦 可能的搜索为结果:#{$a}" end if $a.length==0 puts "没有符合的" end $stack = [] $a = "" t2 = Time.new c = t2-t1 puts "执行代码的时间为:#{t2-t1}" #sum = sum + c end #end #puts "总时间为:#{sum}" #puts "平均时间为:#{sum/100}" end def fun(str,i,j,k) h = Hash.new() for z in 0..$scan_str.length-1 h["#{$scan_str[z][0]}"]=1 end if str.length.eql?$stack.join("").length #数组转string join("") puts "搜索的结果为:\n #{$stack.join(" ")}" #以空格分开 输出 return end q = [] while !str.length.eql?$stack.join("").length q[j]=str[i,k] #puts "j = #{j}, k = #{k}" #puts "fun的str:#{str}" #puts "fun的q:#{q}" #puts "第#{j}个单词:#{q[j]}" if h.key?q[j] #puts "找到单词:#{q[j]},找到啦 找到啦" $stack.push(q[j]) $stack.push("") #puts "匹配入栈的值:#{$stack}" $a = q[j] fun(str,$stack.join("").length,j+1,1) #puts "栈的值:#{$stack}" end #puts "q[str.length-1]:#{q[str.length-1]}" j = j+1 k = k+1 if q[str.length-1]!=nil #如果后面的单词不匹配 if !h.key?q[str.length-1] $stack.pop $stack.pop return end end end end
ruby代码