1

私は、Matlab の container.Map クラスを辞書として使用しています。マップにない最初の部分文字列 (左から右) を見つけたいと考えています。

たとえば、文字列「math」があり、マップが次のようなものであるとします。

キー値
メートル 1
ま 2
. .
. .
. .

したがって、左から右に読み始めると、マップにない最初の部分文字列は'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 に答える