程序员面试金典: 9.1数组与字符串 3判断一个字符串字符重新排列后是否可变成另一个字符串

#include 
#include 
#include 
#include 

using namespace std;

/*
问题:给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串
分析:字符串排列后的能否变成另一个字符串=对两个字符串排序,排序后比较若相同,则说明经过排列后
      其中一个字符串可以变成另一个字符串
	  如果两个字符串不等,肯定不可以

输入:
cao chao
mach cahm
输出:
no
yes

关键:
1 利用排列后是否可以变成另一个字符串,说明两个字符串所组成的字符相同,即可根据对字符串排序后是否相等来做
*/

bool isCanChange(string& str1 , string& str2)
{
	if(str1.length() != str2.length())
	{
		return false;
	}
	sort(str1.begin() , str1.end());
	sort(str2.begin() , str2.end());
	if( str1 == str2)
	{
		return true;
	}
	else
	{
		return false;
	}
}

int main(int argc, char* argv[])
{
	string str1; 
	string str2;
	while(cin >> str1 >> str2)
	{
		bool flag = isCanChange(str1 , str2);
		if(flag)
		{
			cout << "yes" << endl;
		}
		else
		{
			cout << "no" << endl;
		}
	}
	system("pause");
	return 0;
}


你可能感兴趣的:(程序员面试金典)