[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 slore 于 2017-9-14 17:41 编辑
  1. def type(c)
  2.   return :num if c =~ /[0-9]/
  3.   return :lit if c =~ /[a-z]/
  4. end
  5. def is_expand_pattern(h, t)
  6.   return false if !type(h) || type(h) != type(t)
  7.   true
  8. end
  9. def expand(h, t, opt)
  10.   len = t.ord - h.ord
  11.   return '-' if  len < 1 # b-a, l-a, z-z, 9-3, 7-6, 5-5
  12.   return '' if len == 1 # i-j, 8-9
  13.   if opt[0] == 3
  14.     return '*' * (len - 1) * opt[1] #times
  15.   end
  16.   ex = []
  17.   (h..t).each { |c|
  18.     next if c == h || c == t
  19.     ex.push c * opt[1] #times
  20.   }
  21.   ex.reverse! if opt[2] == 2 #reverse
  22.   ex = ex.join('')
  23.   return ex.upcase if opt[0] == 2  #upcase
  24.   return ex
  25. end
  26. def main(opt, str, expected)
  27.   i = 0;out = '';used = -1;
  28.   str.each_char { |c|
  29.    if c == '-' && used < i - 1 && is_expand_pattern(str[i-1], str[i+1])
  30.         out << expand(str[i-1], str[i+1], opt)
  31.         used = i + 1
  32.     else
  33.       out << c
  34.     end
  35.     i+=1
  36.   }
  37.   puts "#{expected}\n#{out}"
  38. end
  39. main([1,2,1], "abcs-w1234-9s-4zz", "abcsttuuvvw1234556677889s-4zz")
  40. main([2,3,2], "a-d-d", "aCCCBBBd-d")
  41. main([3,4,2], "di-jkstra2-6", "dijkstra2************6")
  42. main([1,2,1], "d-cc-dl-ld-aa-d9-89-74-56-64-9:i-j-k:i-k-z:j-i-k-1-4-8:j-i-k-n7-3-2",
  43.               "d-ccdl-ld-aabbccd9-89-7456-64556677889:ij-k:ijjk-n:j-i-k-122334-8:j-i-kllmmn7-3-2")
  44. main([2,2,1], "d-cc-dl-ld-aa-d9-89-74-56-64-9:i-j-k:i-k-n:j-i-k-1-4-8:j-i-k-n7-3-2",
  45.               "")
  46. main([2,2,2], "d-cc-dl-ld-aa-d9-89-74-56-64-9:i-j-k:i-k-n:j-i-k-1-4-8:j-i-k-n7-3-2",
  47.               "")
  48. main([3,2,1], "d-cc-dl-ld-aa-d9-89-74-56-64-9:i-j-k:i-k-n:j-i-k-1-4-8:j-i-k-n7-3-2",
  49.               "")
复制代码
abcsttuuvvw1234556677889s-4zz
abcsttuuvvw1234556677889s-4zz
aCCCBBBd-d
aCCCBBBd-d
dijkstra2************6
dijkstra2************6
d-ccdl-ld-aabbccd9-89-7456-64556677889:ij-k:ijjk-n:j-i-k-122334-8:j-i-kllmmn7-3-2
d-ccdl-ld-aabbccd9-89-7456-64556677889:ij-k:ijjk-z:j-i-k-122334-8:j-i-kllmmn7-3-2
d-ccdl-ld-aaBBCCd9-89-7456-64556677889:ij-k:iJJk-n:j-i-k-122334-8:j-i-kLLMMn7-3-2
d-ccdl-ld-aaCCBBd9-89-7456-64887766559:ij-k:iJJk-n:j-i-k-133224-8:j-i-kMMLLn7-3-2
d-ccdl-ld-aa****d9-89-7456-64********9:ij-k:i**k-n:j-i-k-1****4-8:j-i-k****n7-3-2


有一条规则没说清,所以有点出入。
就是是贪婪方式么?

i-k-n
i-k展开,k虽然用了,k-n还展开?

还是说,i-k展开,-n单独不成对,原样输出。

【输入输出样例2】给的a-d-d,但是d-d相同,所以还是输出-d无法判明。
1

评分人数

TOP

返回列表