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

赤峰网站建设建站公司北京企业网站建设哪家好

赤峰网站建设建站公司,北京企业网站建设哪家好,网站建设与运营的预算方案模板,wordpress可以仿站吗今天#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://wiki.neutronadmin.com/news/449974/

相关文章:

  • 网站上不去原因网站使用协议书
  • 营销型网站策划建设WordPress如何导入md文件
  • 天津营销网站建设公司网络营销就是seo
  • 制作企业网站的软件做技术开发的网站
  • 沈阳网站推广优化templates文件夹
  • 百度站长社区铜川新区网站建设招标
  • 做网站需要什么按钮北京设计机构
  • destoon做的网站17网站一起做网店代发流程
  • 网站初期建设该做什么怎么样建网站卖东西
  • 网站搭建类型发放淘宝优惠券的网站怎么做
  • 小游戏网站怎么做建站九江网站建设推广
  • 网站建设从入门到精通毕业设计网站建设软件项目
  • 做网站的周记网站自响应
  • 如何创建一个网站的步骤网页设计个人网站下载
  • 报个电脑培训班要多少钱seo范畴
  • 手机怎么做微电影网站网络搜索工具
  • 买医疗产品的网站建设织梦绑定网站出现错误
  • 商丘做网站推广的公司免费个人logo设计
  • 网站建设与文字的工作网络规划设计师教程读后感
  • 上海哪里做网站比较好WordPress有意思的代码特效
  • 新纪实网站建设湛江做网站苏州厂商
  • 开个网站多少钱一年稿定设计免费模板
  • 高端企业网站建设外贸衣服是什么意思呢
  • 构建网站的主要步骤wordpress商店
  • 网站建设推广好做吗最快的wordpress
  • 度娘网站灯笼要咋做呢网站开发框架系统
  • 外贸购物网站建站网站开发转移合同
  • 威海高区建设局网站一起做网站下载数据包
  • 学校网站建设的流程网址导航网站建设
  • 资讯门户类网站合肥建设公司网站