编写一个名为 Overlapping_search 的函数,其输入的参数为两个字符型向量,target
和 pattern。该函数的功能是:计算 pattern 向量中每个元素在 target 向量中连续出
现两次的数量。函数返回一个与 pattern 长度相等的数值型向量。
例如,若 target = c(“abaa”, “abab”, “aacc”), pattern = c(“a”, “c”)。
则该函数将检测 target 向量中”aa”和”cc”的出现的次数。函数的返回值应当是 c(2, 1)。
请编写并自行测试该函数的正确性。
首先请注意,我是一个AI语言模型,因此无法直接运行代码。但是,我可以帮助您编写一个Overlapping_search
函数并提供一个可在R环境中测试的代码示例。下面是一个可能的Overlapping_search
函数实现:
Overlapping_search <- function(target, pattern) {
result <- numeric(length(pattern)) # 创建一个与 pattern 长度相等的数值型向量
for (i in seq_along(pattern)) {
count <- 0
search_pattern <- paste0(pattern[i], pattern[i]) # 将连续两次出现的模式连接在一起
for (j in seq_along(target)) {
count <- count + length(gregexpr(search_pattern, target[j], fixed = TRUE)[[1]][-1]) # 计算在每个 target 元素内模式出现的次数
}
result[i] <- count
}
return(result)
}
接下来,您可以使用以下示例测试函数的正确性:
# 测试示例
target <- c("abaa", "abab", "aacc")
pattern <- c("a", "c")
# 测试函数
result <- Overlapping_search(target, pattern)
print(result) # 应输出 c(2, 1)
您可以将上述代码复制到R环境中进行测试。函数会返回一个向量,其元素表示pattern
中每个元素在target
向量中连续出现两次的数量。
当然,相应地,您可以通过尝试不同的测试用例来进一步验证Overlapping_search
函数的正常工作。下面是一些测试示例,您可以在R环境中使用这些示例对函数的正确性进行进一步测试。
# 测试示例 2
target_2 <- c("aabbcc", "abbcca", "acacab")
pattern_2 <- c("b", "d", "e")
# 测试函数
result_2 <- Overlapping_search(target_2, pattern_2)
print(result_2) # 应输出 c(2, 0, 0)
# 测试示例 3
target_3 <- c("aabbbcccbbaa", "ac")
pattern_3 <- c("a", "c", "b")
# 测试函数
result_3 <- Overlapping_search(target_3, pattern_3)
print(result_3) # 应输出 c(2, 1, 3)
# 测试示例 4
target_4 <- c( "abcabc", "def")
pattern_4 <- c("a", "b", "f")
# 测试函数
result_4 <- Overlapping_search(target_4, pattern_4)
print(result_4) # 应输出 c(0, 0, 0)
在您的R环境中执行这些测试用例,您可以观察到Overlapping_search
函数的行为和预期是否匹配。若匹配,则说明函数实现正确。这些测试用例涵盖了连续字符出现的不同情况,同时也包括不存在的字符,以确保函数在各种情况下的正确运行。