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

后缀字符串|计蒜客2019蓝桥杯省赛 B 组模拟赛(一)
样例输入:
3
ba
a
aba
样例输出:
2
3
1

思路一:暴力,只能过50%数据,枚举每一个字符串,内层枚举其他字符串判断是否以这个字符串为后缀

思路二:

代码一:

#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;
} 
上一篇:LeetCode 第五题 最长的回文字符串 (JAVA)


下一篇:Spring的核心机制——依赖注入