1032 Sharing
题目大意
给出一个类似静态数组的内容,再给出两个字符串的开头,判断两个字符串是否有公共后缀
算法思想
- 貌似用map会方便一些
- 不能用二重循环,不然测试点5过不去
- 柳神tql,每次看她的代码都五体投地,在结构体里加个flag标志,可以很好的解决匹配问题
- 先遍历一次第一个字符串,把遍历过的结点都设为true,在遍历第二个字符串,如果遇到true的结点直接输出,没有遇到则输出-1
代码
#include<iostream>
#include<map>
using namespace std;
struct node {//字符串结点
char data;
string nex;
bool flag = false;
};
int main() {
map<string, node>s;
node p;
string s1, s2, l, i;
int n;
cin >> s1 >> s2 >> n;
for (int j = 0; j < n; j++) {
cin >> l >> p.data >> p.nex;
s[l] = p;
}
for (i = s1; i != "-1"; i = s[i].nex)//遍历第一个字符串
s[i].flag = true;
for (i = s2; i != "-1"; i = s[i].nex) {//遍历第二个字符串
if (s[i].flag)//为true
break;
}
cout << i;
return 0;
}