后缀字符串|计蒜客2019蓝桥杯省赛 B 组模拟赛(一)

样例输入:
3
ba
a
aba
样例输出:
2
3
1
思路一:暴力,只能过50%数据,枚举每一个字符串,内层枚举其他字符串判断是否以这个字符串为后缀
思路二:哈希表,存储每一个后缀的数目,string.substr函数取后缀
substr用法:

代码一:
#include <bits/stdc++.h>
using namespace std;
string s[10010];
int n;
int main(){
cin>>n;
for(int i = 0;i<n;i++){
cin>>s[i];
}
//ba a aba
//枚举每一个字符串
for(int i=0;i<n;i++){
int ans = 0;
int leni = s[i].size();
//枚举其他字符串
for(int j=0;j<n;j++){
if(i==j){
ans++;
continue;
}
int lenj = s[j].size();
if(lenj < leni){
continue;
}
//判断其他字符串是否以这个字符串为后缀
int flag = 1;
int p = leni - 1;
int q = lenj - 1;
//从i字符串的末尾遍历到i结束 从j的字符串末尾遍历 到j结束如果不相等就跳出
for(;p>=0,q>=0;p--,q--){
if(p<0 || q<0)break; //这里什么bug 指针内存错误
if(s[i][p] != s[j][q]){
flag = 0;
break;
}
}
if(flag) ans++;
}
cout<<ans<<endl;
}
return 0;
}
代码二:
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int INF = 0x3f3f3f3f;
const LL mod = 1e9 + 7;
const int N = 100005;
string a[N];
/*使用map:统计数目*/
/*string.substr(i) 取*/
int main() {
map<string, int> mp;
int n;
cin >> n;
//输入每一个字符串
for (int i = 0; i < n; i++) {
cin >> a[i];
//对输入的当前字符串作 substr取每一个后缀; 并更新当前后缀在mp中的数量
for (int j = 0; j < a[i].size(); j++) {
mp[a[i].substr(j)]++;
}
}
for (int i = 0; i < n; i++) {
cout << mp[a[i]] << endl;
}
return 0;
}
后缀字符串|计蒜客2019蓝桥杯省赛 B 组模拟赛(一)的更多相关文章
- 计蒜客 2019 蓝桥杯省赛 B 组模拟赛(一)
D题:马的管辖 二进制枚举方案.判断该方案是否全部能被覆盖,将最优方案存下来并进行剪枝. #include<iostream> #include<cstring> #inclu ...
- 计蒜客 2019 蓝桥杯省赛 B 组模拟赛(三)一笔画
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> us ...
- 计蒜客 2019 蓝桥杯省赛 B 组模拟赛(三)数字拆分
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> us ...
- 蒜厂年会|计蒜客2019蓝桥杯省赛 B 组模拟赛(一)
样例输入: 3 1 -2 1 样例输出: 2 方法一: 将环形数组拆分成为普通数组,(通过搬运复制数据到尾部),再求前缀和,找出最大前缀和.因为枚举了每一个起点,所以最大连续和也一定出现在前缀和中.. ...
- 抠图|计蒜客2019蓝桥杯省赛 B 组模拟赛(一)
样例输入: 3 4 5 1 0 0 0 1 1 0 1 0 1 1 0 1 0 1 1 0 0 0 1 5 6 1 1 1 1 1 1 1 0 1 0 1 1 1 0 1 0 1 1 1 0 0 0 ...
- 轻重搭配|计蒜客2019蓝桥杯省赛 B 组模拟赛(一)
样例输入: 6 1 9 7 3 5 5 样例输出: 4 思路:贪心,选错贪心思路,只能过一小部分数据,正确贪心思路:从前一半遍历,在后一半中找到比当前元素的两倍大的数(因为这里指针不会后移,所以可以采 ...
- LIS|计蒜客2019蓝桥杯省赛 B 组模拟赛(一)
#include <bits/stdc++.h> using namespace std; const int N = 1e5 + 9; int f[N], a[N]; int n; // ...
- 倍数|计蒜客2019蓝桥杯省赛 B 组模拟赛(一)
思路:从l枚举到r肯定超时,这时我们要转变思路!题目让我们求一个区间内的d的倍数,只需要求出r/d - l/d就是区间内d倍数的个数. 代码: #include <iostream> us ...
- 找质数|计蒜客2019蓝桥杯省赛 B 组模拟赛(一)
找质数 思路:数据大,用线性筛,筛选素数表,最后查表:题目让我们查找相加等于n的两个数,那么我们就枚举1个素数a,在素数表中查找是否存在n-a也是素数. 注意事项:数据大,不宜用输入输出流,cout. ...
随机推荐
- tp 例子=登录逻辑
<?php namespace Home\Controller; use Think\Controller; class LoginController extends Controller{ ...
- Java集合-----Map详解
Map与Collection并列存在.用于保存具有映射关系的数据:Key-Value Map 中的 key 和 value 都可以是任何引用类型的数据 Map 中的 ...
- Rigid Frameworks (画图二分图规律 + DP + 数学组合容斥)
题意:方格n*m,然后对于每一个格子有3种画法1左对角线2右对角线3不画,求让图形稳定的画法有多少种? 思路:通过手画二分图可以发现当二分图联通时改图满足条件,然后我们对于一个dp[n][m]可以利用 ...
- Future复习笔记
1. Future就是对于具体的Runnable或者Callable任务的执行结果进行取消.查询是否完成.获取结果.必要时可以通过get方法获取执行结果,该方法会阻塞直到任务返回结果. Future类 ...
- Linux基础命令---chsh
chsh 改变用户登录时使用的shell,默认使用bash.如果命令行上没有给出shell,chsh将提示输入一个shell.chsh将接受系统上任何可执行文件的完整路径名.但是,如果shell未在“ ...
- let的使用 优先于闭包
let声明的变量在{}中使用,变量的作用域限制在块级域中 举例:使用js动态给ul添加li对象并点击第几项,显示当前点击是第几个 错误代码 window.onload = function(){ va ...
- router.go,router.push,router.replace的区别
除了使用 <router-link> 创建 a 标签来定义导航链接,我们还可以借助 router 的实例方法,通过编写代码来实现.当你点击 <router-link> 时,这个 ...
- JavaUtil 处理Base64的图片上传
UploadImageBase64.java package com.lee.util; import java.io.File; import java.io.FileOutputStream; i ...
- CXF+Spring+Hibernate实现RESTful webservice服务端实例
1.RESTful API接口定义 /* * Copyright 2016-2017 WitPool.org All Rights Reserved. * * You may not use this ...
- v-model指令实现简单的问卷表格
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&q ...