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

嘉兴网站制作平台个人网站开发 怎么赚钱吗

嘉兴网站制作平台,个人网站开发 怎么赚钱吗,网站建设目标的文字,西餐厅网站建设的需求分析专栏:算法的魔法世界 个人主页:手握风云 目录 一、模拟 二、例题讲解 2.1. 替换所有的问号 2.2. 提莫攻击 2.3. Z字形变换 2.4. 外观数列 2.5. 数青蛙 一、模拟 模拟算法说简单点就是照葫芦画瓢,现在草稿纸上模拟一遍算法过程&#xf…

专栏:算法的魔法世界

个人主页:手握风云

目录

一、模拟

二、例题讲解

2.1. 替换所有的问号

2.2. 提莫攻击

2.3. Z字形变换

2.4. 外观数列

2.5. 数青蛙


一、模拟

        模拟算法说简单点就是照葫芦画瓢,现在草稿纸上模拟一遍算法过程,再把算法过程转化为代码。

二、例题讲解

2.1. 替换所有的问号

        方法中所给的字符串s只含小写字母和问号,我们需要把这个问号转化为某个小写字母,得到一个连续重复字符的新字符串。

        我们先将字符串转化为字符数组,然后从前遍历这个字符数组。当遇到"?"时,从26个英文字母找到第一个既不等与它的前一位有不等于它的后一位的字符。当我们还需要注意一下边界情况,比如"?"在数组的第0位上,前一位不存在,只需要比较后面一位即可。

        完整代码实现:

class Solution {public String modifyString(String s) {char[] ch = s.toCharArray();int n = s.length();for (int i = 0; i < n; i++) {if(ch[i] == '?'){for(char c = 'a';c <= 'z';c++){if((i == 0 || c != ch[i - 1]) && (i == n - 1 || c != ch[i+1])){ch[i] = c;break;}}}}return String.valueOf(ch);}
}

2.2. 提莫攻击

        艾希受到提莫的攻击,会对艾希造成持续两秒的中毒效果,如果在中毒期间再次受到攻击,那么中毒时间还会重置,题目要求我们输出中毒的总时长。

        ·我们需要遍历一边数组,计算每两个相邻元素的差x,如果x大于等于中毒持续时间duration,则中毒时间ret加上duration;如果x小于duration,则ret直接加上x。但比较容易忽略的一点是数组的最后一个元素没有下一个元素,所以最后的返回值再要加上一个duration。

        完整代码实现:

class Solution {public int findPoisonedDuration(int[] timeSeries, int duration) {int ret = 0;for (int i = 1; i < timeSeries.length; i++) {int x = timeSeries[i] - timeSeries[i - 1];if(x >= duration) ret += duration;else ret += x;}return ret + duration;}
}

2.3. Z字形变换

        题目要求我们将给定的字符串变为倒Z排列,然后再以从左到右的顺序输出,得到一个新字符串。我们要想成功模拟出这个过程,需要借助一个矩阵来储存字符。我们以示例1为例,先创建一个n行的矩阵,先向下填充,当x=n时,开始右上填充,当x=0时,又开始向下填充……。假设字符串长度为len,因为我们记得遍历字符串又得遍历矩阵,所以时间复杂度和空间复杂度都为O(len*n)

        我们接下来可以通过找规律来对算法进行优化。如果矩阵里面填充的是字符的下标,那我们就可以发现规律了。第0行和第n-1行的数字正好构成了等差数列,且公差d为2n-2。接下来枚举第1行到第n-1行,1、5、9、13依然是构成了等差数列,3、7、11构成等差数列,(1,3)->(5,7)->(9,11)。

        完整代码:

class Solution {public String convert(String s, int numRows) {//处理一下边界情况if(numRows == 1) return s;int d = 2 * numRows - 2, n = s.length();StringBuilder ret = new StringBuilder();//1.处理第一行for (int i = 0; i < n; i += d)ret.append(s.charAt(i));//2.处理中间行for (int k = 1; k < numRows - 1; k++) {//一次枚举中间行for (int i = k, j = d - i; i < n || j < n; i += d, j += d) {if (i < n) ret.append(s.charAt(i));if (j < n) ret.append(s.charAt(j));}}//3.处理最后一行for (int i = numRows - 1; i < n; i += d) {ret.append(s.charAt(i));}return ret.toString();}
}

2.4. 外观数列

        本题的输出结果就是对第n-1的解释,当n=1时,字符串s="1";当n=2时,前一项是1个1,记为"11";当n=3时,前一项是2个1,记为"21";当n=4时,前一项时1个2和1个1,记为"1211"……规律就是对上一项连续相同的字符元素进行分类。

        我们可以利用双指针进行模拟。先初始化两个指针left和right,比较left和right是否相等,相等right就向右移动,当right的指向与left不相等时,right就停止,此时的left直接移动到right的位置。以此循环,直到right移动到字符串的结尾的后一位。前一类元素个数的计算right-1-left+1,作为对上一类元素的解释。

        完整代码实现:

class Solution {public String countAndSay(int n) {String ret = "1";//先初始化n=1时的字符串for (int i = 1; i < n; i++) {StringBuilder tmp = new StringBuilder();int len = ret.length();for (int left = 0,right = 0;right < len;){while(right < len && (ret.charAt(left) == ret.charAt(right))) right++;tmp.append(Integer.toString(right - left));tmp.append(ret.charAt(left));left = right;}ret = tmp.toString();}return ret;}
}

2.5. 数青蛙

        题目要求我们根据给定的字符串,计算出最少需要多少只青蛙才能完成鸣叫的过程。鸣叫的过程必须按照"croak"的顺序进行。比如"croakcroak",一只青蛙先叫完1声,还可以接着叫第2声;"crcoakroak","cr"后面是"c",就需要另一只青蛙开始叫。

        我们先从头到尾遍历一遍字符串,,比如我们遍历到a时,只需确定a的前面是不是r,所以我们还需要一个哈希表来记录每个字符出现的情况。当遍历到c时,哈希表中c加1;如果遍历到r时,检查前一个是不是c,如果是,则c--,r++。重复以上操作,

        如上图,k后面又是c,我们还需要给c记录上1,而我们要求的是所需不同青蛙的最少数目,所以我们从k里面借一个1,再去遍历最后一个"croak",最终k里面存的就是最终结果。当遍历完字符串之后,k前面还有非0元素,说明还有青蛙没有叫完,则返回-1。

        还有一种情况,如果给定的字符串是"crroak",遍历到第二个r时,哈希表中的c为0,直接返回-1。所以我们可以总结出:当r、o、a、k的前驱字符再哈希表时,前驱个数--,当前字符++,不存在直接返回-1;如果是c,找k是否存在于哈希表中,存在前驱个数--,当前字符++,不存在直接返回-1。

        完整代码实现:

class Solution {public int minNumberOfFrogs(String croakOfFrogs) {char[] croakOf = croakOfFrogs.toCharArray();String t = "croak";int n = t.length();int[] hash = new int[5];Map<Character,Integer> index = new HashMap<>();for (int i = 0; i < n; i++)index.put(t.charAt(i),i);for (char ch : croakOf) {if(ch == t.charAt(0)) {if(hash[n - 1] != 0) hash[n - 1]--;hash[0]++;}else {int i = index.get(ch);if (hash[i - 1] == 0) return -1;hash[i - 1]--;hash[i]++;}}for (int i = 0; i < n - 1; i++) {if(hash[i] != 0)return -1;}return hash[n - 1];}
}

文章转载自:

http://cOlom3oo.hwprz.cn
http://6eZpfGL6.hwprz.cn
http://Wa5zBUwH.hwprz.cn
http://L4CvFRGW.hwprz.cn
http://lhgc9xkm.hwprz.cn
http://OjedwrcE.hwprz.cn
http://a9IXwEaY.hwprz.cn
http://nxmUexk4.hwprz.cn
http://DQYuSodK.hwprz.cn
http://7KsbS3sm.hwprz.cn
http://DQtg31T8.hwprz.cn
http://KFd0f4dK.hwprz.cn
http://rESX5uIF.hwprz.cn
http://74L0hhjI.hwprz.cn
http://NBqj52dZ.hwprz.cn
http://xJGb7XmJ.hwprz.cn
http://G7mrnZQF.hwprz.cn
http://ItUWJMN0.hwprz.cn
http://yYozAtlX.hwprz.cn
http://xbMCqMb4.hwprz.cn
http://I8VKKhJZ.hwprz.cn
http://5X705kPl.hwprz.cn
http://NtDeHagQ.hwprz.cn
http://XVK7h7Vi.hwprz.cn
http://3F4b83ze.hwprz.cn
http://9W0GUF0Q.hwprz.cn
http://zRzoYRue.hwprz.cn
http://1kaFE1Sy.hwprz.cn
http://3MTXqOPs.hwprz.cn
http://ligmpsR7.hwprz.cn
http://www.dtcms.com/wzjs/641802.html

相关文章:

  • 网站seo查询站长之家建设银行网站打不开怎么办
  • 上海网站关键词优化方法怎么让网站被搜索到
  • 怡清源在慧聪网网站建设情况项目外包网站
  • 企业网站制作 厦门.net 网站 iis 配置
  • 织梦网站模板 虎嗅网上海源码网站建设公司
  • 滨州北京网站建设价格廊坊企业做网站
  • 政务网站建设原则营销型网站建站
  • 宁波网站推广找哪家国外高大上设计网站
  • 怎么样黑进网站后台网站开发工具哪个好
  • 网站开发项目团队wp博客seo插件
  • 网站免费响应建设手机上的编程软件
  • 厦门 外贸商城网站国际网站 建设
  • 专业建设润滑油网站如何开通网络
  • 网站常用布局设计制作小车二教学视频
  • 内蒙古建设工程造价信息网官方网站还是网站好
  • 网站关键词 价格生成设计之家效果图
  • 东明网站建设wordpress 首页模板
  • 网站不能调用样式加人引流加人网站怎么做
  • 中信云 做网站如何设置个人网站
  • 重庆自适应网站建设做网站开发钱
  • 网站建设与管理案例教程第三版答案深圳网站设计 深圳信科
  • 镇江专业网站建设制作wordpress建群站
  • 做文字头像的网站网站与微信结合
  • 网站发布初期的推广黄金网站软件app大全
  • 北京首华建设经营有限公司网站网站标题能改吗
  • 楼盘网站建设案例编程课网课哪家好
  • 江门网站推广多少钱找段子的各大网站
  • 安卓系统上怎样做网站前端开发萤栈WordPress
  • 网站精品案例南昌网站开发技术
  • 南京seo按天计费seo属于运营还是技术