题解 | #月月查华华的手机#

月月查华华的手机

https://ac.nowcoder.com/acm/problem/23053

记录每个字母出现的位置,查找的时候用二分优化,时间复杂度nlogn

#include<iostream>
#include<vector>
using namespace std;
string str;
char t[1000005];
int n;
vector<int> space[150];

int binary_search(const vector<int> &arr, int k) {
	int l = 0, r = arr.size() - 1, middle;
	if(r == -1) return -1;
	while(l < r) {
		middle = (l + r) / 2;
		if(arr[middle] < k) l = middle + 1;
		else r = middle;
	}
	if(arr[l] < k) return -1;
	return arr[l];
}

int main() {
	cin >> str;
	for(int i = 0; str[i]; i++) {
		space[str[i] - 'A'].push_back(i);
	}
	int n;
	cin >> n;
	while(n--) {
		scanf("%s", t);
		int s = 0;
		int flag = 1;
		for(int i = 0; t[i]; i++) {
			s = binary_search(space[t[i] - 'A'], s);
			if(s == -1) {
				flag = 0;
				break;
			}
			s += 1;
		}
		if(flag) cout << "Yes" << endl;
		else cout << "No" << endl;
	}
	return 0;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-25 17:51
点赞 评论 收藏
分享
06-17 22:34
湖南工学院 Java
点赞 评论 收藏
分享
07-19 13:28
长沙学院 Java
程序员小白条:你有面试就有希望,没面试自然就没希望,到时候就知道了,你问别人也没啥用处的
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-21 13:38
8月实习会变多吗现在还没找到实习该怎么办...回复的hr好少
码农索隆:3-4月就要开始找,基本上6月份就发offer,7月初已经开始暑期实习了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务