Leetcode 097 Interleaving String(bfs)

题目连接:Leetcode 097 Interleaving String

解题思路:在队列中维护truple,i和j,表示s1[i], s2[j]匹配到s3[k],然后k+1在队列的基础上向后匹配。

class Solution {
	public:
		bool isInterleave(string s1, string s2, string s3) {
			int n1 = s1.size(), n2 = s2.size(), n3 = s3.size();
			if (n1 + n2 != n3) return false;

			set<pair<int,int>> g;
			g.insert(make_pair(0, 0));

			for (int i = 0; i < n3; i++) {
				set<pair<int,int>> t;
				for (set<pair<int,int>>::iterator iter = g.begin(); iter != g.end(); iter++) {
					int x = iter->first;
					int y = iter->second;

					if (x < n1 && s1[x] == s3[i])
						t.insert(make_pair(x+1, y));
					if (y < n2 && s2[y] == s3[i])
						t.insert(make_pair(x, y+1));
				}
				g = t;
			}
			return g.size();
		}
};

猜你喜欢

转载自blog.csdn.net/u011328934/article/details/80716130