hw11_03.cpp

3、字符易位破译,使用string类实现:
编写函数,测试两个字符串是否字符异位相等,即两个字符串中包含的字母是相同的,但次序可以不同,
如“silent” 和“listen” 是字符异位相等,但“baac”与“abcc” 不是。
bool isAnagram(const string & str1, const string & str2);
void sort(string & str);
提示:先对字符串进行排序,然后再比较。(程序取名hw11_02.cpp)
#include <iostream>
#include <string> 

using namespace std;

void sort(string & str);
bool isAnagram(const string & s1, const string & s2);
 
int main()
{
   string str1, str2;
   cout << "Enter two strings: ";
   cin >> str1 >> str2;
   sort(str1);
   sort(str2);
   if (isAnagram(str1, str2)) {
      cout<<"yes"<<endl;
   }
   else {
      cout<<"no"<<endl;
   }
	return 0;
}

void sort(string & str) 
{
   for(int i = 0; i < str.length() - 1; i++) {
      for(int j = i + 1; j < str.length(); j++) {
         if (str[i] > str[j]) {
            char temp = str[i];
            str[i] = str[j];
            str[j] = temp;
         }
      }
   }
   cout<<"sorted:"<<str<<endl;
}

bool isAnagram(const string & s1, const string & s2) {
   if (s1.length() != s2.length()) {
      return false;
   }
   for (int i = 0; i < s1.length(); i++) {
      if (s1[i]!=s2[i]) {
         return false;
      }
   }
   return true;
}

2人评论了“hw11_03.cpp”

回复 wsw 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部