xqn2017

导航

389. Find the Difference

原题:

389. Find the Difference

解题:

采用map字典进行计数,由于只增加了一个字符,那么其他字符的在s和t中均各自出现,所以,可以先遍历串t,建立字符:计数字典,然后遍历串s,每个字符对应的计数就减一,只有增加的字符对应的计数才是1,其余的均为0;

class Solution {
public:
	char findTheDifference(string s, string t) 
	{
		int i = 0;
		int j = 0;
		map <char,int> maptmp;
		for(i = 0;i < t.length();i++)
		{
			maptmp[t[i]]++;
		}
		for(j = 0;j < s.length();j++)
		{
			if(maptmp.find(s[j])!= maptmp.end())
			{
				maptmp[s[j]]--;
			}			
		}
		for(i = 0;i < t.length();i++)
		{
			if(maptmp[t[i]] == 1)
			{
				return t[i];
			}
		}
	}
};

 改进:先遍历s,然后遍历t,当计数小于0时则跳出循环,可以减少查找次数,同时用无序的map比有序map要快

class Solution {
public:
	char findTheDifference(string s, string t) 
	{
		int i = 0;
		int j = 0;
		unordered_map <char,int> maptmp;
		for(i = 0;i < s.length();i++)
		{
			maptmp[s[i]]++;
		}
		for(j = 0;j < t.length();j++)
		{
			maptmp[t[j]]--;
			if(maptmp[t[j]] < 0)
			{
				return t[j];
			}				
		}
	}
};

  

 

posted on 2018-02-26 20:53  xqn2017  阅读(130)  评论(0编辑  收藏  举报