C++扰乱字符串

2024-02-11 07:59
文章标签 c++ 字符串 扰乱

本文主要是介绍C++扰乱字符串,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述
如题:我们可以采用动态规划解决问题:在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上面定义中k对应代码中的len,w对应了代码中的k,因为代码比较长,换了变量定义方便我们看懂

class Solution {
public:bool isScramble(string s1, string s2) {int n = s1.size();int m = s2.size();// 如果长度不相等,则必然不相等if (n != m){return false;}// 如果字符不相同,那么必然也不可能相等int cnt1[26];int cnt2[26];memset(cnt1, 0, sizeof(int)*26);memset(cnt2, 0, sizeof(int)*26);for (int i = 0; i < n; ++i){++cnt1[s1[i]-'a'];++cnt2[s2[i]-'a'];}for (int i = 0; i < 26; ++i){if (cnt1[i] != cnt2[i]){return false;}}// 这里额外多取一个是想覆盖len=n的情况,而无需额外去减1vector<vector<vector<int>>> d(n, vector<vector<int>>(n, vector<int>(n+1, 0)));for (int i = 0; i < n; ++i){for (int j = 0; j < n; ++j){d[i][j][1] = s1[i] == s2[j];}}// 这里长度覆盖到n位置for (int len = 2; len <= n; ++len){for (int i = 0; i <= n - len; ++i){for (int j = 0; j <= n - len; ++j){// 内部子长度去尝试是否满足条件, 这里至少要保证分段大于0,所以范围是1~len-1for (int k = 1; k <= len-1; ++k){if (d[i][j][k] && d[i+k][j+k][len-k]){d[i][j][len] = true;// cout << i << "," << j << "," << len << " true" << endl;// 退出子长度k的循环break;}if (d[i][j+len-k][k] && d[i+k][j][len-k]){d[i][j][len] = true;// cout << i << "," << j << "," << len << " true" << endl;// 退出子长度k的循环break;}}}}}return d[0][0][n];}
};

这篇关于C++扰乱字符串的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/699278

相关文章

C++右移运算符的一个小坑及解决

《C++右移运算符的一个小坑及解决》文章指出右移运算符处理负数时左侧补1导致死循环,与除法行为不同,强调需注意补码机制以正确统计二进制1的个数... 目录我遇到了这么一个www.chinasem.cn函数由此可以看到也很好理解总结我遇到了这么一个函数template<typename T>unsigned

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

Java使用正则提取字符串中的内容的详细步骤

《Java使用正则提取字符串中的内容的详细步骤》:本文主要介绍Java中使用正则表达式提取字符串内容的方法,通过Pattern和Matcher类实现,涵盖编译正则、查找匹配、分组捕获、数字与邮箱提... 目录1. 基础流程2. 关键方法说明3. 常见场景示例场景1:提取所有数字场景2:提取邮箱地址4. 高级

C++ STL-string类底层实现过程

《C++STL-string类底层实现过程》本文实现了一个简易的string类,涵盖动态数组存储、深拷贝机制、迭代器支持、容量调整、字符串修改、运算符重载等功能,模拟标准string核心特性,重点强... 目录实现框架一、默认成员函数1.默认构造函数2.构造函数3.拷贝构造函数(重点)4.赋值运算符重载函数

C++ vector越界问题的完整解决方案

《C++vector越界问题的完整解决方案》在C++开发中,std::vector作为最常用的动态数组容器,其便捷性与性能优势使其成为处理可变长度数据的首选,然而,数组越界访问始终是威胁程序稳定性的... 目录引言一、vector越界的底层原理与危害1.1 越界访问的本质原因1.2 越界访问的实际危害二、基

Python 字符串裁切与提取全面且实用的解决方案

《Python字符串裁切与提取全面且实用的解决方案》本文梳理了Python字符串处理方法,涵盖基础切片、split/partition分割、正则匹配及结构化数据解析(如BeautifulSoup、j... 目录python 字符串裁切与提取的完整指南 基础切片方法1. 使用切片操作符[start:end]2

MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)

《MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)》本文给大家介绍MyBatis的xml中字符串类型判空与非字符串类型判空处理方式,本文给大家介绍的非常详细,对大家的学习或... 目录完整 Hutool 写法版本对比优化为什么status变成Long?为什么 price 没事?怎

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c