zoukankan      html  css  js  c++  java
  • 后缀字符串|计蒜客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;
    }
    
  • 相关阅读:
    队列
    StringBuilder&StringBuffer 源码阅读
    八种基本类型的包装类
    Object 源码阅读
    String 类源码分析
    SpringBoot 启动流程
    BeanDefinition 实例化过程
    BeanDefinition 解析流程【解析所有配置类】
    BeanDefinition 实例
    切面触发过程
  • 原文地址:https://www.cnblogs.com/fisherss/p/10345577.html
Copyright © 2011-2022 走看看