小编jas*_*sis的帖子

检查非数字值是否在范围内的最佳方法是什么?

有时,思考最佳算法是很棘手的。好吧,我必须使用“字母/数字/数字”形式的某些范围,例如 X86-Z95 就是一个范围。实际上我需要查看给定的代码是否在代码范围内。我想我会生成一个包含范围的数组并检查代码是否在数组中。但由于我做了很多工作来实现该算法,我认为有一种更简单的方法来实现它。我希望看到一些更有效或更优雅的解决方案。我在下面留下我的代码。

提前致谢!

library(stringr)
generateInterval = function(str_interval) {
  limits = strsplit(str_interval, '-')[[1]]
  letters_limits = substr(limits, 1, 1)
  numbers_limits = as.numeric(substr(limits, 2, 3))
  if (letters_limits[1] == letters_limits[2]) {
    interval = paste0(letters_limits[1], numbers_limits[1]:numbers_limits[2])
  } else {
    pos = which(LETTERS %in% letters_limits)
    interval_letters = LETTERS[pos[1]:pos[2]]
    numbers = as.numeric(substr(limits, 2, 3))
    interval = c()
    for (i in 1:length(interval_letters)) {
      if (i == 1) {
        interval = c(interval, paste0(interval_letters[i], numbers[1]:99))
      } else if (i == length(interval_letters)) {
        interval = c(interval, paste0(interval_letters[i], 0:numbers[2]))
      } else …
Run Code Online (Sandbox Code Playgroud)

algorithm performance r

0
推荐指数
1
解决办法
116
查看次数

标签 统计

algorithm ×1

performance ×1

r ×1