首页 > 其他分享 >AcWing 778. 字符串最大跨距

AcWing 778. 字符串最大跨距

时间:2023-05-10 16:37:22浏览次数:32  
标签:跨距 int s2 s1 pos 778 find AcWing

AcWing 778. 字符串最大跨距


1. 地址

https://www.acwing.com/problem/content/description/780/

2. 题解

#include <iostream>
#include <cstdio>

using namespace std;

//从左往右找
int find_str_left(string s,string s1){
    for(int i=0;i + s1.size()<=s.size();i++){
        int j;
        for(j=0;j<s1.size();j++){
            if(s[i+j] != s1[j]){
                break;
            }
        }
        if(j == s1.size()){
            return i;
        }
    }
    return -1;
}
//从右往左找
int find_str_right(string s,string s2){
    for(int i=s.size()-1;((i+1)-s2.size())>=0;i--){
        int j;
        for(j=0;j<s2.size();j++){
            if(s[i-j] != s2[(s2.size()-1)-j]){
                break;
            }
        }
        if(j == s2.size()){
            return i - (s2.size()-1);
        }
    }
    return -1;
}

int main(){
    string s[3] = {"","",""};
    int cur = 0;
    char c;
    while(cin >> c){
        if(c == ','){
            cur++;
            continue;
        }
        s[cur] += c;
    }
    int s1_pos = find_str_left(s[0],s[1]);
    int s2_pos = find_str_right(s[0],s[2]);
    if(s1_pos == -1 || s2_pos == -1){
        puts("-1");
    }else if(s1_pos - s2_pos >= 0){
        puts("-1");
    }else if(s2_pos >= s1_pos && s2_pos <= s1_pos+s[1].size()-1){
        puts("-1");   
    }else{
        int result = s2_pos - (s1_pos+s[1].size());
        cout << result << endl;
    }
    return 0;
}

标签:跨距,int,s2,s1,pos,778,find,AcWing
From: https://www.cnblogs.com/gao79135/p/17388342.html

相关文章

  • AcWing 776. 字符串移位包含问题
    AcWing776.字符串移位包含问题1.地址https://www.acwing.com/problem/content/778/2.题解#include<iostream>#include<cstdio>#include<string>#include<algorithm>usingnamespacestd;intmain(){strings;strings1;ci......
  • AcWing 771. 字符串中最长的连续出现的字符
    AcWing771.字符串中最长的连续出现的字符1.地址https://www.acwing.com/problem/content/description/773/2.题解#include<iostream>#include<cstdio>#include<string>usingnamespacestd;intmain(){intn;intsum;intmax;int......
  • Acwing周赛102
    倍增这是一道简单数论题usingnamespacestd;typedeflonglongLL;constintN=1e5+10;inta[N],n;intdiv(intx){if(x%2==0)while(x%2==0)x/=2;if(x%3==0)while(x%3==0)x/=3;returnx;}intma......
  • AcWing 770. 单词替换
    AcWing770.单词替换1.地址https://www.acwing.com/problem/content/772/2.题解#include<iostream>#include<cstdio>#include<sstream>usingnamespacestd;intmain(){strings;stringa,b;stringresult="";......
  • 【算法基础】DFS深度优先算法 —— AcWing 843. n-皇后问题 AcWing 842. 排列数字
    n-皇后问题是一个经典的dfs深度优先遍历的题目,在题解这一题之前,将由浅入深,先讲解一个n-皇后问题的母题。-------AcWing842.排列数字 [AcWing842].排列数字题目概述给定一个整数 n,将数字 1∼n排成一排,将会有很多种排列方法。现在,请你按照字典序将所有的排列方法输出。输入格......
  • POJ2739 Sum of Consecutive Prime Numbers&&Acwing4938 连续质数之和
    方法:单调队列为什么是单调队列?因为这里让我们求连续的质数和,我们可以利用欧拉筛来维护质数,再利用单调队列来维护连续的质数。代码(POJ不支持C++11差评):#include<cstdlib>#include<cstring>#include<cstdio>#include<cctype>namespaceFastIo{ #definegcgetchar() #d......
  • acwing 4645. 选数异或
     输出yesnoyes no题意分析,给一串数组,再在每次提问时给出一个区间,l,r;求l,r区间内是否存在两个数,两数异或后值为给出的x;已知a^b=x-->a^x=b;思路:1,把每个数异或x,存在另一个数组(b)里,暴力搜索,看区间内b数组内数字是否有等于a数组内数字,TLE2.记录下标,比较每个......
  • AcWing 3549. 最长非递减子序列
    \(AcWing\)\(3549\).最长非递减子序列一、题目描述给定一个长度为\(n\)的数字序列\(a_1,a_2,…,a_n\),序列中只包含数字\(1\)和\(2\)。现在,你要选取一个区间\([l,r](1≤l≤r≤n)\),将\(a_l,a_{l+1},…,a_r\)进行翻转,并且使得到的新数字序列\(a\)的最长非递减子序列......
  • AcWing 1209. 带分数
    1-暴力解法思考1:暴力列举出1~9的全排列,之后再将这些数字按照一定规则相加,最后将结果与n比较。全排列好写,但相加的规则不好写,而且太暴力了,估计会超时。/*AcWing1209.带分数00.最暴力的写法1.枚举全排列2.枚举位数(枚举a和b,可算出c)3.直接算出n,判断等......
  • AcWing 754. 平方矩阵 II
    AcWing754.平方矩阵II1.地址https://www.acwing.com/problem/content/756/2.题解#include<iostream>#include<cstdio>#include<cmath>usingnamespacestd;//每个元素的值为:各个元素下标相减的绝对值+1intmain(){intmatrix[102][102];intn;......