1032 Sharing

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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值