C++ 中的元字串(檢查兩個字串是否可以在一個字串中交換後變得相同)


在本節中,我們將學習如何檢查兩個字串是否為元字串。元字串是指非常相似的字串。如果在一個字串中交換兩個元素,那麼它將與另一個字串匹配。例如,兩個字串“HELLO”和“OELLH”就是元字串。

要檢查兩個字串是否為元字串,我們必須遵循以下步驟。

步驟

  • 如果兩個字串長度不同,則返回 false

  • 否則,查詢不匹配字元的數量,並存儲不匹配字元的索引。

  • 如果計數大於 2,則返回 false

  • 否則,交換這些字元,如果兩個字串相同,則返回 true,否則返回 false。

示例

 線上演示

#include <iostream>
using namespace std;
bool areTheyMetaString(string s1, string s2) {
   int s1_len = s1.length();
   int s2_len = s2.length();
   if (s1_len != s2_len)
   return false;
   int prev = -1, curr = -1;
   int count = 0;
   for (int i=0; i<s1_len; i++) {
      if (s1[i] != s2[i]) {
         count++; // number of unmatched characters
         if (count > 2)
         return false;
         prev = curr;
         curr = i;
      }
   }
   return (count == 2 && s1[prev] == s2[curr] && s1[curr] == s2[prev]);
}
int main() {
   string s1 = "HELLO", s2 = "OELLH";
   if(areTheyMetaString(s1, s2)){
      cout << "Meta Strings";
   } else {
      cout << "Not Meta Strings";
   }
}

輸出

Meta Strings

更新於:2019年10月21日

575 次瀏覽

開啟你的職業生涯

完成課程後獲得認證

開始學習
廣告
© . All rights reserved.