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

品牌餐饮加盟网站建设建设网站是什么意思

品牌餐饮加盟网站建设,建设网站是什么意思,wordpress 跳转小程序,福建宏盛建设集团网站1、字符串基础知识 字符串是由任意长度的字符组成的字符数组,用于表示文本内容,使用string类型来表示string类型表达的字符串是无法改变内容的,只能进行读操作,如果要进行写操作,那么会新创建一个字符串对象。原来的字…

1、字符串基础知识

  • 字符串是由任意长度的字符组成的字符数组,用于表示文本内容,使用string类型来表示
  • string类型表达的字符串是无法改变内容的,只能进行读操作,如果要进行写操作,那么会新创建一个字符串对象。原来的字符串保持不变。
  • 若要改变原来的字符串内容,Java中可使用StringBuilder实例。

2、LCR 014. 字符串的排列

题目信息:

  • https://leetcode.cn/problems/MPnaiL/description/
给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的某个变位词。
换句话说,第一个字符串的排列之一是第二个字符串的 子串 。示例 1:
输入: s1 = "ab" s2 = "eidbaooo"
输出: True
解释: s2 包含 s1 的排列之一 ("ba").
示例 2:
输入: s1= "ab" s2 = "eidboaoo"
输出: False

变位词:

  • 变位词就是单词的长度和字母个数都相同的字符串
  • 例如:字符串abc的变位词有:bac,acb等一共6个,变位词的个数是字符串长度的阶乘

解题思路:双指针哈希表解法

  • 此题只需要记录短字符串中字母出现的个数,然后再通过双指针遍历长字符串的子字符数组,判断区域范围内出现的字母和个数是否相等
  • 可以使用哈希表保存字符串中每个字符串出现的次数,由于字母一共有26个,考虑使用int[]数组结构作为哈希表
  • 刚开始int[]数组中所有元素都为0;遍历短字符串s1的所有字符,记录字母出现的次数,记录的哈希表作为后面比对的基准值
  • 接着遍历长字符串s2的字符,长字符串的比对采用双指针定位遍历区域,控制比对的区域与短字符串相同的长度,并将双指针往右移动,在移动过程中记录子字符串子数组中字母出现的次数,判断字母出现的次数是否相同。
  • 判断字母是否的方式,两个长度字符串的哈希表使用同一个int[]数组对象进行数据保存,短字符串的字母次数增加,而长字符串的字母数字在哈希表中则减少,如果最终数组元素为0,说明该区域内所有字符出现的次数是相同的。
例子:s1 = "ab" s2 = "dbacd"
刚开始int[]内容 {0,0,0,0,0} - 使用5个长度的数组表示字母个数,真实情况是26
遍历短字符串s1后,计算得到的数组: {1,1,0,0,0}    - 短字符串ab,只在数组的第一个和第二个位置增加
接着遍历s2,使用双指针移动,要减去字母出现的次数:
第一次遍历db子字符串数组后,数组结果为:{1,0,0,-1,0}
第二次遍历ba子字符串,第一个字符d要加回来进行还原,后面的字符a要减少,数组结果为:{0,0,0,0,0}
--》最终得到结果,所有的字母出现的次数都为0

代码实现:

// 判断所有的字母个数是否都是0
bool allZero(std::vector<int> countArr)
{for (int count : countArr){if (count != 0){return false;}}return true;
}bool checkInclusion(string s1, string s2)
{// 长度判断if (s1.length() > s2.length()){return false;}vector<int> countArr(26, 0);for (int i = 0; i < s1.length(); i++){countArr[s1[i] - 'a']++; // 短字符串字母的个数增加countArr[s2[i] - 'a']--; // 长字符串字母的个数减少}// 判断26个字母的所有个数是否都等于0if (allZero(countArr)){return true; // 短字符串s1,和长字符串s2的第一次遍历,就命中了变位词}// 刚开始的几个字符没有命中,继续遍历长字符串后面的字符子数组for (int i = s1.length(); i < s2.length(); i++){countArr[s2[i] - 'a']--;countArr[s2[i - s1.length()] - 'a']++;    // 长字符串,之前减去的字母,进行还原if (allZero(countArr)){return true;}}return false;
}

3、总结

  • 使用int[]数组,代替哈希表结构,提高效率
  • 使用双指针控制遍历范围,和滑动窗口类似思路
  • 注意在遍历过程中,使用的是同一个哈希表对象,遍历区间右侧新遍历的字符减少,左侧划出区域的字符新增还原,这样才是当前区域的字符数量情况
http://www.dtcms.com/a/481402.html

相关文章:

  • 做的好的装修公司网站网站建设系统chi系统
  • 网站名称是网址吗汉中专业网站建设推广
  • 网站底部导航栏网站建设最低多少钱
  • 网站开发能进入无形资产吗英文网站开发哪家好
  • 网站首页flash制作seo优化seo外包
  • 北京微信网站网页设计与网站建设在线考试石油大学
  • 如何做网站的注册页面宠物网站首页模板
  • 广州工程建设网站wordpress is admin
  • 软工毕设做网站自己的网站怎么和百度做友链
  • 阿里云服务器如何用IP做网站建设工程信息网官网首页
  • 大学生网站设计大作业做家教需要什么哪个网站的会员
  • 白银网站建设白银做网站是用wordpress还是DW
  • 如何做网站的后台管理周口网站建设73data
  • 百度旗下的外贸建站公司教育培训机构加盟
  • 做网站之前的工作福州 网站设计公司
  • 北京网站设计联系电话租房网站开发文献综述模板
  • 做网站的计划概要建筑安全网
  • 昆山哪里有做网站的社交网站备案
  • 内部网站建设公司手机端网站排名
  • 博客系统做网站泉州seo排名
  • 菏泽建设局网站千牛网页版登录入口
  • 做网站难度国外网站大牛不懂英语可以做吗
  • wordpress 迁移升级谷歌排名优化入门教程
  • 网站商品展示页怎么做的软文代写服务
  • 免费 支付宝购物网站模版代码高亮网站
  • kesioncms企业网站蓝色模板网址大全2345视频
  • 做外贸接私单的网站263企业邮箱网页登录入口
  • 马鞍山市 网站建设网站的设计制作流程
  • 嘉兴网站建设低价推荐深圳福田教育
  • 旅行社网站建设设计公司哪家好房产网签是什么意思