当前位置: 首页 > news >正文

日本美国韩国中国/网站seo优化推广

日本美国韩国中国,网站seo优化推广,网站发外链,精准客户数据采集软件食用指南:本文为作者刷题中认为有必要记录的题目 前置知识:回溯法经典问题之全排列 ♈️今日夜电波:带我去找夜生活—告五人 0:49 ━━━━━━️💟──────── 4:59 …

                                        食用指南:本文为作者刷题中认为有必要记录的题目

                                        前置知识:回溯法经典问题之全排列

                                       ♈️今日夜电波:带我去找夜生活—告五人

                                                                0:49 ━━━━━━️💟──────── 4:59
                                                                    🔄   ◀️   ⏸   ▶️    ☰ 

                                      💗关注👍点赞🙌收藏您的每一次鼓励都是对我莫大的支持😍 


目录

回溯法的理解

💮一、字符串的排列

 🌺二、字母大小写全排列


回溯法的理解

 本文参考了一位大佬的题解,详细的介绍了回溯法:链接

上一篇刷题文: 回溯法经典问题之子集

        记住一句话:for循环横向遍历,递归纵向遍历,回溯不断调整结果集。 这句话将从始至终贯穿我们对于以上问题的回溯解决办法。 


💮一、字符串的排列

题目链接:剑指 Offer 38. 字符串的排列

题目描述:

        输入一个字符串,打印出该字符串中字符的所有排列。

        你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。

示例:

输入:s = "abc"
输出:["abc","acb","bac","bca","cab","cba"]

限制:

1 <= s 的长度 <= 8

本题思路:

        首先:采用经典的“回溯三部曲”:

        1、定义两个全局变量,一个用来存放符合条件单一结果(path),一个用来存放符合条件结果的集合(result)。

        2、回溯的主体,回溯终止条件。path保存一组数据,每次遍历到叶子节点,再插入到result中,并且回溯到上一个节点。

        3、单层搜索的过程。for循环用来横向遍历,递归的过程是纵向遍历。

       根据题意我们做出一定的改动:

        由于本题是以string容器的形式传递的字符串,对此,我们的path也应当转变为相应的形式。题目以及例子很明确的表现了本题实际上跟 回溯法经典问题之全排列 第二小题是关系密切的。大家可参考。此题没有说明字符串内的元素是否会有相同的元素,对此,我们当做会有重复的元素,于是我们建立一个bool类型的vector容器used来作为确定每一个节点是否使用过,以此来解决重复插入问题。接着我们需要加入剪枝操作,以此来解决重复选取问题

一句话概括此题就是:

        只有当used[i]==0时才去进行后续操作。

        同一树枝上可以选取,但是同一树层上不可以选取!

        即{i>0&&s[i-1]==s[i]&&used[i-1]==0}才去进行后续操作。

class Solution {
private:
vector<string> result;void trackback(string& s,string& path,vector<bool>& used)
{if(path.size()==s.size()){result.push_back(path);return;}for(int i=0;i<s.size();i++){if(i>0&&s[i]==s[i-1]&&used[i-1]==0)continue;if (used[i] != 1){path.push_back(s[i]);used[i] = 1;trackback(s,path,used);used[i] = 0;path.pop_back();}}
}
public:vector<string> permutation(string s) {if(s.size()==0)return{};result.clear();vector<bool> used;sort(s.begin(),s.end());//关键一步,由于不知道是否重复,所以必须要排序,以找到重复的字母string path="";used.resize(s.size());trackback(s,path,used);return result;}
};

        特别注意!!!  这里的sort操作是关键的一步!由于不知道是否重复,所以必须要排序,以找到重复的字母,让他们相邻排列。


 🌺二、字母大小写全排列

题目链接:784. 字母大小写全排列

题目描述:

        给定一个字符串 s ,通过将字符串 s 中的每个字母转变大小写,我们可以获得一个新的字符串。返回 所有可能得到的字符串集合 。以 任意顺序 返回输出。

示例 1:

输入:s = "a1b2"
输出:["a1b2", "a1B2", "A1b2", "A1B2"]

示例 2:

输入: s = "3z4"
输出: ["3z4","3Z4"]

提示:

  • 1 <= s.length <= 12
  • s 由小写英文字母、大写英文字母和数字组成

本题思路:

        同样的,采用回溯三部曲,但是我们这次不采用for循环遍历,因为根据题意,本题仅仅只是改变“字母的大小写转化”。如下:

        1、定义两个全局变量,一个用来存放符合条件单一结果(path),一个用来存放符合条件结果的集合(result)。注意要记得用一个变量来记录遍历的位置。

        2、回溯的主体,回溯终止条件。path保存一组数据,每次遍历到叶子节点,再插入到result中,并且回溯到上一个节点。

        3、无需for循环横向遍历,仅仅纵向遍历,即递归的过程。

     

        梳理一下判断的条件:判断是否为字母,如果是字母,则不管他是否为大小写,直接转化为小写插入path,进行递归,递归回来后再转化为大写插入path,递归。如果不是字母,则直接插入parh,进行下一层的递归。

        一图让你了解~(以a1b2为例)

class Solution {
private:
vector<string> result;void backtrack(string& s,string& path,int index)
{if(s.size()==path.size()){result.push_back(path);return;}if(isalpha(s[index])){path.push_back(tolower(s[index]));backtrack(s,path,index+1);path.pop_back();path.push_back(toupper(s[index]));backtrack(s,path,index+1);path.pop_back();}else{path.push_back(s[index]);backtrack(s,path,index+1);path.pop_back();}}
public:vector<string> letterCasePermutation(string s) {result.clear();string path="";backtrack(s,path,0);return result;}
};


                感谢你耐心的看到这里ღ( ´・ᴗ・` )比心,如有哪里有错误请踢一脚作者o(╥﹏╥)o!  

                                 

                                                                 给个三连再走嘛~      

相关文章:

每日刷题|回溯法解决全排列问题第二弹之解决字符串、字母大小排列问题

食用指南&#xff1a;本文为作者刷题中认为有必要记录的题目 前置知识&#xff1a;回溯法经典问题之全排列 ♈️今日夜电波&#xff1a;带我去找夜生活—告五人 0:49 ━━━━━━️&#x1f49f;──────── 4:59 …...

python循环遍历字典: title_content_list.append([key, value])print(ti

示例示例Python循环遍历字典的方法有以下几种&#xff1a;使用for...in循环&#xff1a; Python循环遍历字典的方法有以下几种&#xff1a; 1. 使用for...in循环&#xff1a; python dict {name:Tom, age:20, gender:male} # 遍历所有的键 for key in dict:print(key) # 遍…...

Redis List类型命令 - Set类型命令 - SortedSet类型命令

目录 List类型 什么是双向链表呢&#xff1f; List类型的特征&#xff1a; List的常用命令 LPUSH和RPUSH的区别&#xff1a; LPOP和RPOP的区别&#xff1a; LPUSH和RPUSH的使用 LPOP和RPOP的使用 LRANGE key star end&#xff1a;返回一段距离范围内所有的元素 BLPOP…...

等级保护 —— 安全控制点,安全要求

等级保护 —— 安全控制点&#xff0c;安全要求 安全物理环境&#xff1a; 物理位置选择 a&#xff09;机房场地应选择在具有防震、防风和防雨等能力的建筑内&#xff1b; 1&#xff09;核查是否有建筑物抗震设防审批文档。2&#xff09;核查是否有雨水渗漏的痕迹。3&#…...

nginx-缓存

disk cache&#xff1a;磁盘缓存数据&#xff0c;有时间延迟&#xff0c;但是非常小&#xff0c;相对于直接请求服务器返回 对于用户来说基本无感知。 memory cache&#xff1a;磁盘缓存数据&#xff0c;基本上没有时间延迟 协商缓存&#xff08;nginx自带功能&#xff0c; 不…...

layui使用富文本已经使用第三方插件Kz.layedit来优化layui的富文本

官方提供的编辑器功能太少 没有字体颜色&#xff0c;不能传图片&#xff0c;视频等扩展 官方文档说的很清楚&#xff0c;简易的富文本使用layui提供的的确十分方便&#xff0c;但是缺少的元素很多。像什么标题&#xff0c;元素&#xff0c;等简单的都没有。小编我当初页为此苦…...

某公司二面面试题总结

你们公司开发遵守怎么样的代码规范&#xff1f; 当编写Java代码时&#xff0c;遵守良好的代码规范对于代码的可读性和可维护性至关重要。以下是一些更详细的Java代码规范建议&#xff1a; 命名规范&#xff1a; 类名应该采用名词或名词短语&#xff0c;使用驼峰命名法&#xf…...

Ubuntu编译运行socket.io

本篇文章记录一下自己在ubuntu上编译运行socket.io的过程&#xff0c;客户端选用的是socket.io的c的库&#xff0c;编译起来倒不难&#xff0c;但是说到运行的话&#xff0c;对我来说确实是花了点功夫。毕竟程序要能运行起来才能更方便地去熟悉代码&#xff0c;因此今天我就记录…...

h5开发网站-页面内容不够高时,如何定位footer始终位于页面的最底部

一、问题描述&#xff1a; 在使用h5开发页面时&#xff0c;会遇到这个情况&#xff1a;当整个页面高度不足以占满显示屏一屏&#xff0c;页脚不是在页面最底部&#xff0c;影响用户视觉。想让页脚始终在页面最底部&#xff0c;我们可能会想到用&#xff1a; 1.min-height来控…...

手机也可以搭建个人博客?安卓Termux+Hexo搭建属于你自己的博客网站【cpolar实现公网访问】

文章目录 前言 1.安装 Hexo2.安装cpolar3.远程访问4.固定公网地址 前言 Hexo 是一个用 Nodejs 编写的快速、简洁且高效的博客框架。Hexo 使用 Markdown 解析文章&#xff0c;在几秒内&#xff0c;即可利用靓丽的主题生成静态网页。 下面介绍在Termux中安装个人hexo博客并结合…...

Support for password authentication was removed on August 13, 2021 解决方案

打开你的github&#xff0c;Setting 点击Developer settings。 点击generate new token 按照需要选择scope 生成token&#xff0c;以后复制下来。 给git设置token样式的remote url git remote set-url origin https://你的tokengithub.com/你的git用户名/仓库名称.git然后就可…...

MPP 与 SMP 的区别,终于有人讲明白了【文末送书】

文章目录 导读01 SMP1. SMP 的典型特征2. SMP的优缺点 02 分布式MPP计算架构1. MPP 架构核心原理2. MPP 典型特征3. MPP优缺点 写作末尾 导读 当今数据计算领域主要的应用程序和模型可大致分为在线事务处理&#xff08;On-line Transaction Processing &#xff0c;OLTP&#…...

华为OD机试真题【寻找最大价值的矿堆】

1、题目描述 【寻找最大价值的矿堆】 给你一个由 ‘0’&#xff08;空地&#xff09;、’1’&#xff08;银矿&#xff09;、’2’&#xff08;金矿&#xff09;组成的的地图&#xff0c; 矿堆只能由上下左右相邻的金矿或银矿连接形成。超出地图范围可以认为是空地。 假设银矿…...

Java Maven 项目读取项目版本号

java读取 pom.xml 文件中设置的版本号 1. 在 src/main/resources/下新建 app.properties 文件&#xff1a; app.version${project.version} 2. 在pom.xml 中增加 <build> <resources> <resource> <directory>src/main/resources</di…...

Lesson4-1:OpenCV图像特征提取与描述---角点特征

学习目标 理解图像的特征知道图像的角点 1 图像的特征 大多数人都玩过拼图游戏。首先拿到完整图像的碎片&#xff0c;然后把这些碎片以正确的方式排列起来从而重建这幅图像。如果把拼图游戏的原理写成计算机程序&#xff0c;那计算机就也会玩拼图游戏了。 在拼图时&#xff…...

C++ 基础(一)题目练习

一、使用输出运算符输出一个长方形&#xff0c; 如下图所示&#xff1a; #include <iostream> using namespace std; int main() {cout << "*******" << endl;cout << "*******" << endl;cout << "*******"…...

Webpack5入门到原理

Webpack5学习 尚硅谷Webpack5新版视频教程 B站直达&#xff1a;https://www.bilibili.com/video/BV14T4y1z7sw 百度网盘&#xff1a;https://pan.baidu.com/s/114lJRGua2uHBdLq_iVLOOQ 提取码&#xff1a;yyds 阿里云盘&#xff1a;https://www.aliyundrive.com/s/UMkmCzdWsGh&…...

地形有通挂支隘险远六种情况

地形有通、挂、支、隘、险、远六种情况 【安志强趣讲《孙子兵法》第34讲】 第十一篇&#xff1a;地形篇 【全文大白话】 地形有各种情况&#xff0c;行军有各种情况&#xff0c;用好地形获得交战的主动权。 【原文】 孙子曰&#xff1a;地形有通者&#xff0c;有挂者&#xff0…...

C++多态案例-设计计算器类

1.前置知识点 多态是面向对象的三大特性之一 多态分为两类 静态多态&#xff1a;函数重载和运算符重载都属于静态多态&#xff0c;复用函数名动态多态&#xff1a;派生类和虚函数实现运行时多态 静态多态和动态多态的区别 静态多态的函数地址早绑定-----编译阶段确定函数地…...

复制tr的一行数据或者复制数据使用,使用jq和php

效果图&#xff1a; 2.Html <!--复制的tr数据&#xff0c;s----------------------------------------------------------------------------------------------->{foreach from$arrs keykk itemvv} <tr><td style"text-align:center;" >1</t…...

软件测试的基础(1)

程序员(开发) :编写程序代码(实现产品需求) 产品:收集并设计需求-需求文档(根据用户需求进行产品设计) UI设计师:设计界面,向外展示的形态 前端:用代码实现页面的显示 DBA:数据库设计(系统数据之间的关联) 运维:版本控制和发布、升级迭代,环境搭建和维护 客服:客户支持,…...

基于Java+SpringBoot+Vue前后端分离库存管理系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…...

Secrets in Kubernetes (K8s)

摘要 在Kubernetes&#xff08;K8s&#xff09;中&#xff0c;Secrets是一种用于存储敏感数据的资源对象。它可以用于存储密码、API密钥、数据库凭证等敏感信息&#xff0c;以便在应用程序中使用。 设计实现说明如下&#xff1a; 加密存储&#xff1a;Kubernetes使用Base64编…...

模板测试和深度测试在cocoscreator中的应用

模板测试(Stencil Test)&#xff1a; 当片段着色器处理完一个片段之后&#xff0c;模板测试(Stencil Test)会开始执行&#xff0c;和深度测试一样&#xff0c;它也可能会丢弃片段。接下来&#xff0c;被保留的片段会进入深度测试&#xff0c;它可能会丢弃更多的片段。模板测试…...

手机便签功能在哪里?如何在便签里添加文字图片视频?

手机已成为我们生活中不可或缺的工具&#xff0c;而在使用手机的过程中&#xff0c;我们经常需要随手记录一些重要的事情。那么&#xff0c;如何高效便捷地记录这些事情呢&#xff1f;答案就是使用手机便签软件。但是&#xff0c;有很多人不知道手机便签功能在哪里&#xff1f;…...

Java 中 List 的 7 种遍历方式 及 性能对比

# for i 循环 for (int i 0; i < list.size(); i) {list.get(i); }# 增强for循环 for (int item : list) { }# iterator for 循环 for (Iterator<Integer> iterator list.iterator(); iterator.hasNext(); ) {iterator.next(); }# iterator while 循环 Iterator<…...

【Github】git本地仓库建立与远程连接

文章目录 前言一、git简介二、git下载2.1下载地址 三、git安装3.1安装3.2 配置3.3 config设置&#xff08;增删改查&#xff09; 四.github与git连接——本地Git仓库4.1 建本地的版本库4.2 源代码放入本地仓库4.3提交仓库 五、github与git的连接——远程连接5.1 创建SSH Key5.2…...

【瑞萨零基础入门】瑞萨MCU零基础入门系列教程(更新连载中)

瑞萨MCU零基础入门系列教程 前言 得益于瑞萨强大的MCU、强大的软件开发工具(e studio)&#xff0c;也得益于瑞萨和RA生态工作室提供的支持&#xff0c;我们团队编写了《ARM嵌入式系统中面向对象的模块编程方法》&#xff0c;全书37章&#xff0c;将近500页: 讲解面向对象编程…...

Bean 的生命周期总结

目录 一、Bean生命周期的五个阶段 Bean的初始化 二、PostConstruct 和 PreDestroy 各自的效果 三、 实例化和初始化的区别 四、为什么要先设置属性在进⾏初始化呢&#xff1f; 一、Bean生命周期的五个阶段 Java 中的公共类称之为 Bean 或 Java Bean&#xff0c;而 Spring 中的…...

【Python】环境的搭建

前言 要想能够进行 Python 开发, 就需要搭建好 Python 的环境. 需要安装的环境主要是两个部分: 运行环境: Python开发环境: PyCharm 一、安装 Python 1.找到官方网站 官网&#xff1a;Welcome to Python.org 2.找到下载页面 点击download中的Windows 3.选择稳定版中的Win…...