8.6 字符串中等 481 Magical String 522 Longest Uncommon Subsequence II

news2024/9/27 8:20:20

481 Magical String

在这里插入图片描述
在这里插入图片描述

像之前那个base ,首先对magic string做出分析,才能够分析这道题的规律
读题:
//magic string仅包含1 2 并遵循
//串联字符串中 ‘1’ 和 ‘2’ 的连续出现次数可以生成该字符串。concatenating 字符串中的 1 2 contiguous occurences
//像是compress string的升级版
//magic string
思路:
//算前n个字符种1的数目:将前n项全部相加Sum ,会表示前sum项,反过来,如果n为某个数x及其之前的字符相加,则x是通过计数得到的
//如果已知s 那么res 就等于遍历 s , prev ++ 计数变量prev碰到不同的数字就判断prev == 1 ? res++;res;并且prev = 0 ;—>逆推出这道题难点是还原s
//已知s[0] = 1 , s[1] = 2所以可以推后面的吗? 主要是这个问题,
//频率 组数 当前位 双指针

class Solution {
public:
    int magicalString(int n) {
        if(n <= 3) return 1;
        int occur = 0 , sum = 3 , res = 1;
        vector<int> s = {1 , 2 , 2};
        for(int i = 2; i < n ; i ++){
            //填充s
            occur = s[i];//确定第i+1组的字符数 第i+1组有s[i]个字符
            sum += occur;//记录可以被推测的位数 , 确定可以推断的位置 sum-1 sum-2
            if(occur == 2){
                //判断是1还是2

                s.push_back(s[sum - 3] == 2 ? 1 : 2);//每组的开头肯定和前一组不一致
                s.push_back(s[sum - 3] == 2 ? 1 : 2);
            }else{
                s.push_back(s[sum - 2] == 2 ? 1 : 2);
            }
            //计数1
            if(s[i] == 1){
                res++;
            }
        }
        return res;

    }
};

优化【积累学习】

class Solution {
public:
    int magicalString(int n) {
        if (n <= 0) return 0;
        if (n <= 3) return 1; // s = "122" for n <= 3

        vector<int> s = {1, 2, 2}; // 初始化前3个字符
        int res = 1; // 已经有一个 '1'
        int head = 2; // 当前字符的位置
        int tail = 3; // 新字符的位置

        while (tail < n) {
            int count = s[head]; // 取出当前字符需要生成的次数
            int nextNum = s[tail - 1] == 1 ? 2 : 1; // 下一个字符类型

            for (int i = 0; i < count; ++i) {
                if (tail >= n) break;
                s.push_back(nextNum);
                if (nextNum == 1) res++; // 如果是 '1',则计数
                tail++;
            }
            head++;
        }

        return res;
    }
};

在这里插入图片描述

c++代码学习 : 数组动态创建错误

class Solution {
public:
    int magicalString(int n) {
        if(n <= 3) return 1;
        int occur = 0 , sum = 1 , res = 1;
        vector<int> s(n,0);//除非n为已知数,否则不能这么干
        s[0] = 1;
        s[1] = 2;
        s[2] = 2;
//修正
s = {1,2,2};
之后只能s.push_back();

522 Longest Uncommon Subsequence II

在这里插入图片描述

class Solution {
public:
    bool isSubsequence(string str1 , string str2){
        int n1 = str1.size() , n2 = str2.size();
        int s1 = 0 , s2 = 0;//指针
        if(str1 == str2)return true;
        //str2是否为str1的子字符串
        while(s1 < n1 && s2 < n2){
            if(str1[s1] == str2[s2]){
                s2++;
            }
            s1++;
        } 
        return s2 == n2;
    }
    int findLUSlength(vector<string>& strs) {
        //最长 特殊 序列
        //strs 返回最长特殊序列的长度,不存在则-1
        //最长特殊序列:着重点在 特殊,独一无二的 不为别人的一部分/子序列的序列
        //一般先找最长的长度,然后逐一下降?--->一一对比 contains中的数值都不大
        int n = strs.size();
        int max = -1;
        for(int i = 0 ; i < n ; i++){
            bool isUnique = true;
            for(int j = 0 ; j < n ; j++){
                if(i != j && isSubsequence(strs[j] , strs[i])){
                    isUnique = false;
                    break;
                    
                }
            }
            if(isUnique){
                max = std::max(max, static_cast<int>(strs[i].size()));
            }
        }
        return max; 
    }
};
// std::max()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1985428.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java学习--线程基础

概念 程序 进程 线程 单线程与多线程 并发与并行 线程基本使用 基成Tread类 关系图 /* author:我与java相爱相杀---c语言梦开始的地方 今天又是努力学习的一天&#xff01;&#xff01;&#xff01;&#xff01; */public class Main {public static void main(String[] args…

【Android Git】Android项目版本由SVN变成Git

前言 在Android开发环境中&#xff0c;vcs.xml 文件通常与版本控制系统&#xff08;VCS&#xff0c;Version Control System&#xff09;有关&#xff0c;这个文件保存了与版本控制系统相关的配置信息。 以下是 vcs.xml 文件的一些关键点&#xff1a; 版本控制配置&#xff…

Cryptomator-保护你云端上的隐私

网盘为我们提供了随时随地的获取数据的便利性&#xff0c;同时也大大减轻了你我手机电脑空间不足的压力。但是一旦我们选择使用网盘&#xff0c;也意味着把你的私密数据交出去了。 对于公共资料来说&#xff0c;无非就是提供网盘服务的公司知道了你做了保存这些资料的行为而已…

提升用户体验的秘诀:Xinstall带你玩转Web拉起App!

在移动互联网时代&#xff0c;App已成为我们日常生活中不可或缺的一部分。然而&#xff0c;随着App数量的激增&#xff0c;如何让用户更便捷地触达和使用App&#xff0c;成为了开发者和运营者面临的一大挑战。今天&#xff0c;我们就来揭秘一个能够一键实现Web拉起App的神器——…

类和对象(下)C++

1.初始化列表 1.为什么有初始化列表&#xff0c;它的作用&#xff1f; ->初始化列表&#xff0c;是构造函数初始化的另一种形式。 ->在语法上面理解&#xff0c;初始化列表可以认定为是每个成员变量定义初始化的地方. ->引用成员变量&#xff0c;const成员变量&am…

100个免费可商用图库,一次收藏,众生受益

正版图片太贵 免费图片又有风险 免费可商用图片才是设计师心头所好 &#xff08;当然&#xff0c;土豪除外&#xff09; 以下100个免费可商用图库 一次收藏&#xff0c;众生受益! skr&#xff5e;skr&#xff5e;skr&#xff5e; 1、Unsplash https://unsplash.com/ 建…

6个免费的无损音乐下载网站,建议收藏!

分享6个免费的无损音乐下载网站&#xff0c;都是免费的音乐资源&#xff0c;国内外各种风格的音乐都能找到&#xff01; MyFreeMP3 tools.liumingye.cn/music/ 一个免费的mp3音乐下载网站&#xff0c;里面有丰富的音乐资源&#xff0c;支持在线听歌&#xff0c;也可以下载歌…

找出电脑中的视频文件并把地址输出在记事本文件中,同理通过bat脚本找出需要的其他后缀文件,比如word文件excel文件md文件等

下午的时候&#xff0c;突然很着急&#xff0c;要找到一个之前下载的一个视频文件&#xff0c;我记得是mp4格式的视频文件&#xff0c;但是具体叫什么名字不记得了&#xff0c;更不记得在哪个目录下&#xff0c;所以想了一个办法&#xff0c;通过bat脚本命令&#xff0c;找到所…

Hack The Box-Resource【更新中】

总体思路 信息收集&端口利用 nmap -sSVC itrc.ssg.htb目标开放了两个ssh端口和一个80端口&#xff0c;先查看80端口 网站是一个SSG IT资源中心&#xff0c;主要用于解决网站问题、管理 SSH 访问、清除病毒和解决各种安全问题的权威一站式商店。 后台挂着目录扫描&#x…

threejs加载fbx带tga贴图报错

描述&#xff1a;threejs加载带tga贴图的fbx时&#xff0c;提示 FBXLoader: TGA loader not found, creating placeholder texture for 11\Pylons_A.TGA 方案一&#xff1a; 加载fbx之前&#xff0c;在LoadingManager中添加TGALoader。此方案有两个前提 1、FBXLoader和TGALoa…

JDK-Java IO流概述

JDK-Java IO流概述 概述 一直以来Java三件套&#xff08;集合、io、多线程&#xff09;都是最热门的Java基础技术点&#xff0c;我们要深入掌握好这三件套才能在日常开发中得心应手&#xff0c;之前有编写集合相关的文章&#xff0c;这里出一篇文章来梳理一下io相关的知识点。 …

电商客服的贴心快捷回复助手

作为一位电商客服&#xff0c;你是否曾在回复顾客的过程中感到困扰&#xff1f;是否因为经验不足而踩过雷&#xff0c;比如被平台提示用了违禁词&#xff0c;或是不清楚平台的响应率和满意度等问题&#xff1f;如果是这样&#xff0c;那么今天我要向大家介绍一款神奇的软件&…

小白学算法之移除元素(双指针法!)

力扣27&#xff1a;移除元素 题目内容&#xff1a; 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并原地修改输入数组。 元素…

使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-游戏存储(结束!)

文章目录 分数储存写在最后 使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击&#xff08;一&#xff09; 使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-激光组件&#xff08;二&#xff09; 使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-飞船动画&#xff08…

制造知识普及(二)--企业内部物料编码(IPN)与制造商物料编码(MPN)

在日常的物料管理业务逻辑中&#xff0c;一物一码是物料管理的基本的业务规则&#xff0c;不管物料从产品开发还是仓库管理&#xff0c;甚至成本核算&#xff0c;都要遵循这个原则&#xff0c;才能保证产品数据的准确性&#xff0c;才具备唯一追溯的可行性。大部分企业都是这种…

OFD 发票解析

文章目录 参考文章1 了解ofd文件结构1.1 如何打开ofd 文件1.2 ofd文件结构1.3 提取信息思路 2. 提取发票信息实现2.1 目录结构2.2 实体类2.3 发票解析类2.4 controller2.5 service 参考文章 ofd发票解析 什么是ofd格式 ofd 格式是一种用于存储金融数据的开放格式&#xff0c;它…

SpringBoot3 配置Logback日志滚动文件

简介 本文介绍了在SpringBoot3中配置Logback日志滚动文件的方法&#xff0c;因为SpringBoot3内置的logback版本是1.4.14&#xff0c;之前使用SpringBoot2.1.5的logback配置发现有些东西不能生效了 环境 SpringBoot v3.3.2 内置的logback-core为1.4.14 正文 <configuration …

【预训练语言模型】 使用Transformers库进行BERT预训练

基于 HuggingFace的Transformer库&#xff0c;在Colab或Kaggle进行预训练。 鉴于算力限制&#xff0c;选用了较小的英文数据集wikitext-2 目的&#xff1a;跑通Mask语言模型的预训练流程 一、准备 1.1 安装依赖 !pip3 install --upgrade pip !pip install -U datasets !pi…

2024华数杯c题题解(一)

目录 原题背景 背景分析 问题一 思路 代码 问题二 思路 代码 原题背景 最近&#xff0c;“city 不 city”这一网络流行语在外国网红的推动下备受关注。随着我国过境免签政策的落实&#xff0c;越来越多外国游客来到中国&#xff0c;通过网络平台展示他们在华旅行的见闻…