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

简述建立一个网站模板步骤深圳画册设计公司排名

简述建立一个网站模板步骤,深圳画册设计公司排名,山东专业的制作网站,网站设计轮播图需要吗今天#xff0c;带来字符串相关算法的讲解。文中不足错漏之处望请斧正#xff01; 理论基础点这里 1. 替换空格 题目描述#xff1a;请实现一个函数#xff0c;把字符串 s 中的每个空格替换成%20。 来源#xff1a;力扣#xff08;LeetCode#xff09; 难…今天带来字符串相关算法的讲解。文中不足错漏之处望请斧正 理论基础点这里 1. 替换空格 题目描述请实现一个函数把字符串 s 中的每个空格替换成%20。 来源力扣LeetCode 难度简单 提示 0 s 的长度 10000 示例 1 输入s “We are happy.” 输出“We%20are%20happy.” 题意转化 把字符串内的所有 替换为%20. 解决思路(抽象) 使用额外空间 创建一个空字符串, 遍历给定字符串s, 遇到字符的时候直接插入空字符串, 遇到空格的时候插入%20. 不使用额外空间 不用额外空间就要扩容统计空格个数每个空格替换成“%20”就意味着每个空格都需要额外两个字符的空间。 扩容后从后向前替换。 为什么是从后向前因为从前向后替换数组元素每次替换完都要把后面所有元素往后移动这就是O(n^2)的复杂度了。 编程实现(具体) 使用额外空间 class Solution { public:string replaceSpace(string s) {string ret;for(char ch : s) {if(ch ) ret %20;else ret ch;}return ret;} };不使用额外空间 class Solution { public:string replaceSpace(string s) {// 扩容int count 0; //空格个数for(char ch : s) if(ch ) count;int oldSize s.size();s.resize(s.size() count * 2);int newSize s.size();// 从后向前替换for(int i oldSize - 1, j newSize - 1; i j; --i, --j) {if(s[i] ! ) {s[j] s[i];} else {s[j] 0;s[j - 1] 2;s[j - 2] %;j - 2; //多了两次操作j指针对应移动}}return s;} };2. 反转单词 给你一个字符串 s 请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中单词间应当仅用单个空格分隔且不包含任何额外的空格。 示例 1 输入s “the sky is blue” 输出“blue is sky the” 示例 2 输入s hello world 输出“world hello” 解释反转后的字符串中不能存在前导空格和尾随空格。 示例 3 输入s “a good example” 输出“example good a” 解释如果两个单词间有多余的空格反转后的字符串需要将单词间的空格减少到仅有一个。 提示 1 s.length 104 s 包含英文大小写字母、数字和空格 ’ ’ s 中 至少存在一个 单词 进阶如果字符串在你使用的编程语言中是一种可变数据类型请尝试使用 O(1) 额外空间复杂度的 原地 解法。 题意转化 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串. 解决思路(抽象) 首先, 要保证单词之间用单个空格连接(头尾没有空格). 原地处理的话, 可以使用双指针重新填充字符串: fast遍历s拿字符遇到空格就跳过slow从头填充合法字符串 简单说, 每次遇到空格就自己把单词填充上, 再手动添加一个空格, 就可以满足题目要求. 单词顺序颠倒, 我们无法直接实现, 但我们能做什么? 颠倒字符串顺序颠倒单个单词顺序 前者就可以颠倒单词顺序, 只不过会让单个单词也颠倒, 我们再次颠倒每个单词, 不就得到了题目要求的字符串了吗. 比如 如 hello world , 整体反转后是 dlrow olleh然后对单词反转 world hello . 简单说, 先总体反转, 再局部反转. 编程实现(具体) 最后一个单词, 可以在反转单词内部顺序的循环中处理, 也可以跳出循环单独处理. 最后一个单词反转单词内部顺序的循环中处理: class Solution { public:string reverseWords(string s) {//双指针重新填充字符串int slow; // 填充字符串int fast; // 遍历sfor (slow 0, fast 0; fast s.size(); fast) {if (s[fast] ) continue; // 如果是空格就跳过// 填充当前单词while (fast s.size() s[fast] ! ) s[slow] s[fast];// 填充空格(只有最后一个单词后不需要填充)s[slow] ;}s.resize(slow - 1); // 去掉多余的空格(最后一个单词后不需要填充, 但我们默认填充了)cout 处理后的字符串: s endl;// 整体反转reverse(s.begin(), s.end());// 局部反转int wordBegin 0;int wordEnd 0;while (wordEnd s.size()) {if (s[wordEnd] || wordEnd s.size()) {reverse(s.begin() wordBegin, s.begin() wordEnd);wordBegin wordEnd 1;wordEnd wordBegin;}wordEnd;}return s;} };最后一个单词跳出循环单独处理: class Solution { public:string reverseWords(string s) {//双指针重新填充字符串int slow; // 填充字符串int fast; // 遍历sfor (slow 0, fast 0; fast s.size(); fast) {if (s[fast] ) continue; // 如果是空格就跳过// 填充当前单词while (fast s.size() s[fast] ! ) s[slow] s[fast];// 填充空格(只有最后一个单词后不需要填充)s[slow] ;}s.resize(slow - 1); // 去掉多余的空格(最后一个单词后不需要填充, 但我们默认填充了)cout 处理后的字符串: s endl;// 整体反转reverse(s.begin(), s.end());// 局部反转int wordBegin 0;int wordEnd 0;while (wordEnd s.size()) {if (s[wordEnd] ) {reverse(s.begin() wordBegin, s.begin() wordEnd);wordBegin wordEnd 1;wordEnd wordBegin;}wordEnd;}reverse(s.begin() wordBegin, s.begin() wordEnd); // 反转最后一个单词return s;} };今天的分享就到这里了感谢您能看到这里。 这里是培根的blog期待与你共同进步
http://www.zqtcl.cn/news/961923/

相关文章:

  • 优秀设计师网站芯片设计公司
  • 铜陵网站建设公司wordpress密码访问插件
  • 一个公司做2个产品网站怎么做的wordpress网站怎么百度的到
  • 邓州做网站做网站seo怎么赚钱
  • 微信小程序开发步骤图长沙百度seo
  • 网站代做仿百度图片网页设计
  • 广州建设局网站首页网络营销专业的就业方向
  • wordpress单页seo关键词优化培训
  • 网站301多久短信营销平台
  • 江苏省现代化实训基地建设网站网站备案加速
  • 中国的网站域名云服务器发布网站
  • 免费seo网站自动推广软件做的好微信商城网站
  • 杭州网站建设方案优化腾讯网络游戏大全列表
  • 泰安网站建设收费标准直播视频app
  • 网站路径问题优秀的网站有哪些
  • 建设网站使用的工具大连免费网站制作
  • 专业的网站优化扬州市城乡建设网站
  • 射阳做网站的公司在哪品牌建设是指
  • 沈阳做网站好的网站分析论文
  • 做熟食的网站美食网站网站开发后端书籍
  • 做模板下载网站挣钱吗网站建设专业导航网站
  • 网站目录结构html静态网站作品
  • 南通建设局网站分类门户网站系统
  • 合肥网站建设企业秒玩小游戏入口
  • 个人做网站开发个人网站备案取名
  • 替代wordpress 搜索seo优化排名易下拉程序
  • asp.net 网站 方案小程序开发是前端还是后端
  • 网站开发 介绍 回扣建设项目验收在哪个网站公示
  • 建立网站免费如何做物流网站
  • 重庆网站设计费用wordpress自动翻页