gpt4 book ai didi

具有线性时间查找的字符串数组

转载 作者:行者123 更新时间:2023-12-04 06:00:18 24 4
gpt4 key购买 nike

我在 Matlab 中进行字符串处理,我通常使用元胞数组在文本中存储单个单词

例子:

a = {'this', 'is', 'an', 'array', 'of', 'strings'}

为了在这个数组中搜索单词“of”,我遍历数组并根据我的单词检查每个单独的元素。这种方法不能扩展,因为如果我得到一个大数据集,我的数组 a 会变大并且循环遍历元素是不明智的。我想知道是否有任何更聪明的方法,也许是 Matlab 中更好的 native 数据结构,可以帮助我更快地运行?

最佳答案

map container是一种选择。我不知道您打算进行哪种特定类型的字符串处理,但这里有一个示例,说明如何将每个字符串存储为与元胞数组中该单词的索引位置向量相关联的键:

a = {'this', 'is', 'an', 'array', 'of', 'strings', 'this', 'is'};

strMap = containers.Map(); %# Create container
for index = 1:numel(a) %# Loop over words to add
word = a{index};
if strMap.isKey(word)
strMap(word) = [strMap(word) index]; %# Add to an existing key
else
strMap(word) = index; %# Make a new key
end
end

然后你可以得到一个词的索引位置:
>> indices = strMap('this')

indices =

1 7 %# Cells 1 and 7 contain 'this'

或者检查元胞数组中是否存在一个词(即它是否是一个键):
>> strMap.isKey('and')

ans =

0 %# 'and' is not present in the cell array

关于具有线性时间查找的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8993314/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com