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

【今日三题】跳台阶扩展问题(找规律) / 包含不超过两种字符的最长子串 / 字符串的排列(回溯—全排列)

头像
⭐️个人主页:@小羊
⭐️所属专栏:Linux
很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~

动图描述

目录

    • 跳台阶扩展问题(找规律)
    • 包含不超过两种字符的最长子串(字符串哈希)
    • 字符串的排列(回溯—全排列)


跳台阶扩展问题(找规律)

  • 跳台阶扩展问题

在这里插入图片描述

我讨厌找规律题🤡

#include <iostream>
using namespace std;int main()
{int n;cin >> n;cout << (1 << (n - 1)) << endl;return 0;
}

包含不超过两种字符的最长子串(字符串哈希)

  • 包含不超过两种字符的最长子串

在这里插入图片描述

#include <iostream>
#include <string>
using namespace std;string s;
int len;
int Hash[26];int main() 
{cin >> s;for (int l = 0, r = 0, cnt = 0; r < s.size(); r++){if (Hash[s[r] - 'a']++ == 0) cnt++;while (cnt > 2){if (--Hash[s[l++] - 'a'] == 0) cnt--;}len = max(len, r - l + 1);}cout << len << endl;return 0;
}

字符串的排列(回溯—全排列)

  • 字符串的排列

在这里插入图片描述

class Solution {vector<string> res;string path;bool used[11] = {};
public:vector<string> Permutation(string str) {sort(str.begin(), str.end());dfs(str);return res;}void dfs(const string &str){if (path.size() == str.size()){res.push_back(path);return;}for (int i = 0; i < str.size(); i++){if (!used[i] && (i == 0 || str[i - 1] != str[i] || used[i - 1])){used[i] = true;path += str[i];dfs(str);path.pop_back();used[i] = false;}}}
};

本篇文章的分享就到这里了,如果您觉得在本文有所收获,还请留下您的三连支持哦~

头像

相关文章:

  • DeepSeek架构解析:从神经动力学视角解构万亿参数模型的认知涌现机制
  • 如何使用docker配置ros-noetic环境并使用rviz,gazebo
  • Docker编排工具---Compose的概述及使用
  • MySQL基础关键_011_视图
  • linux环境安装docker
  • 智慧医院的可视化变革:可视化工具助力数字化转型
  • leetcode 142. Linked List Cycle II
  • 【Django】中间件
  • RDD有哪几种创建方式
  • 软件研发效能体系建设
  • VLM-AD:通过视觉语言模型监督实现端到端自动驾驶
  • Mac中Docker下载与安装
  • Excel模版下载文件导入
  • 跨物种交流新时代!百度发布动物语言转换专利,听懂宠物心声
  • WHAT - Rust 智能指针
  • -CoderOilStationJava高级工程师
  • 嵌入式学习--江协51单片机day2
  • 卷积神经网络基础(七)
  • C++对象注册系统(1)实现原理
  • 【Python爬虫电商数据采集+数据分析】采集电商平台数据信息,并做可视化演示
  • 中国工程院院士、国医大师、现代中国针灸奠基人石学敏逝世
  • 伊朗外长称正与美国进行“善意”的会谈
  • 马上评丨规范隐藏式车门把手,重申安全高于酷炫
  • 陕西澄城樱桃在上海推介,向长三角消费者发出“甜蜜之邀”
  • 上海质子重离子医院二期项目启动,有望成为全世界最大粒子治疗中心
  • 澎湃研究所“营商环境研究伙伴计划”启动