leetcode3042. 统计前后缀下标对 I

给你一个下标从 0 开始的字符串数组 words 。

定义一个 布尔 函数 isPrefixAndSuffix ,它接受两个字符串参数 str1 和 str2 :

  • 当 str1 同时是 str2 的前缀(

    prefix

    )和后缀(

    suffix

    )时,isPrefixAndSuffix(str1, str2) 返回 true,否则返回 false

例如,isPrefixAndSuffix("aba", "ababa") 返回 true,因为 "aba" 既是 "ababa" 的前缀,也是 "ababa" 的后缀,但是 isPrefixAndSuffix("abc", "abcd") 返回 false

以整数形式,返回满足 i < j 且 isPrefixAndSuffix(words[i], words[j]) 为 true 的下标对 (i, j) 的 数量 

双重遍历,for循环,模拟一下,过程就行,

c++代码:需要用到的函数

find() ,rfind(),(倒着寻找),都会返回找到的位置,第一次,

因为要让字符串B出现在另一个字符串A的最前面和最后面,位置分别是0和A.len-B.len

c++代码如下:

class Solution {
public:
    int countPrefixSuffixPairs(vector& words) {
        int i,j;
        int n=words.size();
        int cnt=0;
        for(i=0;i<=n-2;i++){
            int a=words[i].length();
            for(j=i+1;j<=n-1;j++){
                int len=words[j].length();
                if(words[j].find(words[i])==0){
                    if(words[j].rfind(words[i])==len-a){
                        cnt++;
                    }
                    else;
                }
                else;
            }
        }
        return cnt;
    }
};

java代码如下:到了java,两个查找方法,为IndexOf 和lastIndexOf

package leetcode;
/*
3042 统计前后缀下标对 I
*/
import java.util.Scanner;
public class A1 {
    public static void main(String[] args) {
        int n=new Scanner(System.in).nextInt();
        String [] words=new String[n];
        int i,j;
        for(i=0;i

你可能感兴趣的:(c++,java,算法,leetcode)