首页 > 其他分享 >11.25lc每日一题-809. 情感丰富的文字

11.25lc每日一题-809. 情感丰富的文字

时间:2022-11-25 20:44:13浏览次数:44  
标签:heeellooo lc int 字母 11.25 times 809 扩张 hello

有时候人们会用重复写一些字母来表示额外的感受,比如 "hello" -> "heeellooo", "hi" -> "hiii"。我们将相邻字母都相同的一串字符定义为相同字母组,例如:"h", "eee", "ll", "ooo"。

对于一个给定的字符串 S ,如果另一个单词能够通过将一些字母组扩张从而使其和 S 相同,我们将这个单词定义为可扩张的(stretchy)。扩张操作定义如下:选择一个字母组(包含字母 c ),然后往其中添加相同的字母 c 使其长度达到 3 或以上。

例如,以 "hello" 为例,我们可以对字母组 "o" 扩张得到 "hellooo",但是无法以同样的方法得到 "helloo" 因为字母组 "oo" 长度小于 3。此外,我们可以进行另一种扩张 "ll" -> "lllll" 以获得 "helllllooo"。如果 s = "helllllooo",那么查询词 "hello" 是可扩张的,因为可以对它执行这两种扩张操作使得 query = "hello" -> "hellooo" -> "helllllooo" = s。

输入一组查询单词,输出其中可扩张的单词数量。

 

示例:

输入:
s = "heeellooo"
words = ["hello", "hi", "helo"]
输出:1
解释:
我们能通过扩张 "hello" 的 "e" 和 "o" 来得到 "heeellooo"。
我们不能通过扩张 "helo" 来得到 "heeellooo" 因为 "ll" 的长度小于 3 。
 

提示:

1 <= s.length, words.length <= 100
1 <= words[i].length <= 100
s 和所有在 words 中的单词都只由小写字母组成。

思路:n方暴力,一趟n方用结构体存下每个字符转的连续相同字母的区间个数和大小,然后再来一趟n方比较s和每个words,注意题意中是组扩展成组,"oo"可以扩展为"ooo",只要扩展后的长度>=3就行.

class Solution {
    int book[105] = {0};
    struct node
    {
        char x;
        int use = 1;//若果字符顺序不匹配直接弃用
        int times = 0;//连续相同字符的长度
    }e[105][105];
    int ans=0;
public:
    int expressiveWords(string s, vector<string>& words) {
        char pre = s[0];
        int temp = 1;
        for(int i = 0;i<s.length();i++)//记录下s的字符分布情况
        {
           if(s[i]==pre)
           {
               e[100][temp].x = s[i];
               e[100][temp].times+=1;
               pre = s[i];
           }
           else
           {
               temp++;
               e[100][temp].x = s[i];
               e[100][temp].times++;
               pre = s[i];
           }
        }
        int k = temp;
        //cout<<k<<endl;
        for(int i = 0;i<words.size();i++)//对每一个words也记录下分布
        {
        pre = words[i][0];
        temp = 1;
        for(int j=0;j<words[i].length();j++)
        {
           if(words[i][j]==pre)
           {
               e[i][temp].x = words[i][j];
               e[i][temp].times+=1;
               pre = words[i][j];
           }
           else
           {
               temp++;
               e[i][temp].x = words[i][j];
               e[i][temp].times++;
               pre = words[i][j];
           }
        }
        if(temp!=k)//如果分布情况不一样直接弃用
        {
            book[i] = 1;
        }
        }
        for(int i = 0;i<words.size();i++)
        {
            int flag = 0;
            for(int j = 1;j<=k;j++)
            {
                if(book[i]==1)
                {
                    flag = 0;
                    break;
                }
                if(e[i][j].x!=e[100][j].x)//单词出现的顺序不一样
                {
                    flag = 0;
                    break;
                }
                else{
                    if(e[i][j].times>e[100][j].times)//已经大于,不存在扩张
                    {
                        flag = 0;
                        break;
                    }
                    else{
                        if(e[100][j].times==e[i][j].times)
                        {
                            flag++;
                        }
                        else if(e[100][j].times-e[i][j].times>=0&&e[100][j].times>=3)
                        {

                            flag++;
                        }
                    }
                }
            }
            if(flag==k)//得到相同分布,ans++
            {
                ans++;
            }
        }
        return ans;
    } 
};

 

标签:heeellooo,lc,int,字母,11.25,times,809,扩张,hello
From: https://www.cnblogs.com/remarkableboy/p/16926310.html

相关文章

  • LcdTools如何编写初始化代码之--IIC指令
    首先查看LcdTools帮助文档,了解IIC通信指令的详细描述和应用例子。 在了解IIC指令应用之前我们先回顾一下IIC通信协议的构成:IIC由时钟线(SCL)和数据线(SDA)两根线构成通信......
  • 树上差分与LCA
    树上差分与LCA​​可以看b站的这个视频​​讲的很不错强烈推荐LCA什么是LCALCA全称LeastCommonAncester即最近公共祖先祖先:从树根到当前节点的路径中经过的点(不包括当......
  • 11.25.6
    #include<stdio.h>intmain(){ intn,i,j,sum=0; scanf("%d",&n); for(i=1;i<=n;i++) {for(j=1;j<i;j++) {if(i%j==0)sum+=j; } if(i==sum){printf("%ditsfacto......
  • 【涸】2022.11.25
    之前刚刚想着自己写的东西比起闲话更像是流水账好家伙,你时令河啊?这么快?AwayfromOI?×AwayfromOrsay!√乐不得不点评一下这个春季赛:我当着家长的面不好说,春......
  • 【11.19-11.25】博客精彩回顾
    一、优秀文章推荐1.​​对象可达性状态流转分析、引用队列使用和诊断JVM引用情况知识讲解​​2.​​【SpringCloud实战】Eurake服务注册与发现​​3.​​Flink-水位线的......
  • 11.25.2
    #include<stdio.h>intmain(){ inta,n,i; unsignedlonglongsum=0; scanf("%d",&n); a=2; for(i=1;i<=n;i++) { sum+=a; a=a*10+a%10; } printf("%llu",sum)......
  • pwn | others_shellcode
    pwn|others_shellcodebuu的题目,nc直接给shell......
  • GEE|Google Earth Engine报错Error in map(ID=LC08_123038_20190121) Element.copyPro
    本文以LANDSAT/LC08/C01/T1_SR数据集为例介绍Thesourceparameterisrequire应该如何解决。问题描述GEE平台提供了影像在线处理,在完成对数据集处理后,想要对数据进行......
  • PoC、Exp、Payload 与 Shellcode的区别
    在这篇文章中将解释渗透中关于PoC、Exp、Payload与Shellcode的区别PoC,全称"ProofofConcept",中文"概念验证",常指一段漏洞证明的代码。Exp,全称"Exploit",中文"利用"......
  • 809. 情感丰富的文字
    有时候人们会用重复写一些字母来表示额外的感受,比如"hello"->"heeellooo","hi"->"hiii"。我们将相邻字母都相同的一串字符定义为相同字母组,例如:"h","eee","ll","o......