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();
		}
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值