设计一个算法,判断一个字符串s是否形如"序列1@为序列2"模式的字符序列,其中序列1和序列2都不含有'@'字符,且序列2是序列1的逆序列。例如"a+b@b+a"属于该模式的字符序列,而"1+3@3-1"则不是。
时间: 2024-05-01 07:16:29 浏览: 46
判断字符序列是否是回文
5星 · 资源好评率100%
算法思路:
1. 找到'@'字符的位置,如果没有'@'字符则返回false。
2. 将字符串分为两个子串,分别为序列1和序列2。
3. 判断序列1和序列2的长度是否相等,不相等则返回false。
4. 从两个子串的首尾分别取出一个字符进行比较,如果不相等则返回false。
5. 如果序列1和序列2全部比较完毕,且都是相等的,则返回true。
代码实现如下:
```
bool isPattern(string s) {
int pos = s.find('@');
if (pos == string::npos) {
return false;
}
string str1 = s.substr(0, pos);
string str2 = s.substr(pos + 1);
if (str1.length() != str2.length()) {
return false;
}
int len = str1.length();
for (int i = 0; i < len; ++i) {
if (str1[i] != str2[len - 1 - i]) {
return false;
}
}
return true;
}
```
该算法的时间复杂度为O(n),其中n为字符串的长度。
阅读全文