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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP