码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode - One Edit Distance

时间:2015-06-04 17:17:29      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:c++   程序员   面试   

题目:

One Edit Distance

Given two strings S and T, determine if they are both oneedit distance apart.

Hint:
1. If | n – m | is greater than 1, we know immediately both are not one-editdistance apart.
2. It might help if you consider these cases separately, m == n and m ≠ n.
3. Assume that m is always ≤ n, which greatly simplifies the conditionalstatements. If m > n, we could just simply swap S and T.
4. If m == n, it becomes finding if there is exactly one modified operation. Ifm ≠ n, you do not have to consider the delete operation. Just consider theinsert operation in T.


bool OneEditDistance(const string &s1, const string &s2)
{
	if (s1.size() > s2.size())
		return OneEditDistance(s2, s1);
	if (s2.size() - s1.size()>1)
		return false;
	int i1 = 0, i2 = 0;
	while (i1 < s1.size())
	{
		if (s1[i1] == s2[i2])
		{
			++i1;
			++i2;
		}
		else
			break;
	}
	if (i1 == s1.size())
		return true;
	++i2;
	while (i1 < s1.size() && i2<s2.size())
	{
		if (s1[i1] == s2[i2])
		{
			++i1;
			++i2;
		}
		else
			break;
	}

	return i1 == s1.size();
}




leetcode - One Edit Distance

标签:c++   程序员   面试   

原文地址:http://blog.csdn.net/bupt8846/article/details/46362261

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!