1

我在 Matlab 中使用 containers.Map 类作为字典,我想找到不在我的地图中的第一个子字符串(从左到右)。

例如,假设我有字符串“数学”,而我的地图是这样的

核心价值
米 1
马2
. .
. .
. .

因此,如果我从左到右开始阅读,则不在 map 中的第一个子字符串将是'mat'

我想到的显而易见的答案是循环每个字符并进行一些连接,以便使用方法iskey(map, key)找到不在我的地图中的子字符串,其中 key 是每次迭代中的子字符串。

有没有更有效的方法来做到这一点?也许是 matlab 中的一些预定义函数,或者至少是更优雅的代码。

谢谢

4

1 回答 1

1

这个怎么样。

地图=容器。地图;

% Initialise map
map('m') = 1;
map('ma') = 2;
map('burt') = 3;

% Define search string
m = 'math';

% Create cell array element for first 1,2,3... letters of search
ma = repmat(m,length(m),1);
ma = cellstr(char(ma .* tril(ones(length(m)))));

% Find first substring that isn't in map
index = find(~map.isKey(ma),1,'first')
于 2012-10-05T09:26:03.897 回答