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

做网站的盈利点青岛网站建设制作公司

做网站的盈利点,青岛网站建设制作公司,wordpress国产插件,深圳网站建设招标344.反转字符串 建议: 本题是字符串基础题目,就是考察 reverse 函数的实现,同时也明确一下 平时刷题什么时候用 库函数,什么时候 不用库函数 题目链接/文章讲解/视频讲解:代码随想录 思路非常简单,两个指…

344.反转字符串

建议: 本题是字符串基础题目,就是考察 reverse 函数的实现,同时也明确一下 平时刷题什么时候用 库函数,什么时候 不用库函数

题目链接/文章讲解/视频讲解:代码随想录

思路非常简单,两个指针一个指向头一个指向尾巴, 对于字符串,我们定义两个指针(也可以说是索引下标),一个从字符串前面,一个从字符串后面,两个指针同时向中间移动,并交换元素。

class Solution {public void reverseString(char[] s) {int l = 0;int r = s.length - 1;while(l < r){char temp = s[l];s[l] = s[r];s[r] = temp;l++;r--;}}
}

当然,我们也可以用异或运算符进行操作,思路同样,但是在最后进行交换的时候不需要创建额外的空间,效率更高

class Solution {public void reverseString(char[] s) {int l = 0;int r = s.length - 1;while (l < r) {s[l] ^= s[r];  //构造 a ^ b 的结果,并放在 a 中s[r] ^= s[l];  //将 a ^ b 这一结果再 ^ b ,存入b中,此时 b = a, a = a ^ bs[l] ^= s[r];  //a ^ b 的结果再 ^ a ,存入 a 中,此时 b = a, a = b 完成交换l++;r--;}}
}

541. 反转字符串II

建议:本题又进阶了,自己先去独立做一做,然后在看题解,对代码技巧会有很深的体会。

题目链接/文章讲解/视频讲解:代码随想录

我们先理解一下题目意思,如图所示,在图中画了个字符串,令k=3,2k=6,我们将字符串的2k范围内的前k位进行翻转,然后再从2k+1的地方进行上述操作,如果长度<k,我们就不变,途中剩下gh均<k,所以我们需要反转。

其实在遍历字符串的过程中,只要让 i += (2 * k),i 每次移动 2 * k 就可以了,然后判断是否需要有反转的区间。

因为要找的也就是每2 * k 区间的起点,这样写,程序会高效很多。

在正常找到 2k范围的时候,end是start+k-1的位置,如果不足k的时候,依然进行翻转,此时end索引是长度-1

class Solution {public String reverseStr(String s, int k) {char[] ch = s.toCharArray();for(int i = 0; i < ch.length; i += 2 * k){int start = i;//这里是判断尾数够不够k个来取决end指针的位置int end = Math.min(ch.length - 1, start + k - 1);//用异或运算反转 while(start < end){ch[start] ^= ch[end];ch[end] ^= ch[start];ch[start] ^= ch[end];start++;end--;}}return new String(ch);}
}

当然我们也可以用最基础的temp完成交换操作

class Solution {public String reverseStr(String s, int k) {char[] ch = s.toCharArray();for(int i = 0;i < ch.length;i += 2 * k){int start = i;// 判断尾数够不够k个来取决end指针的位置int end = Math.min(ch.length - 1,start + k - 1);while(start < end){char temp = ch[start];ch[start] = ch[end];ch[end] = temp;start++;end--;}}return new String(ch);}
}

卡码网:54.替换数字

建议:对于线性数据结构,填充或者删除,后序处理会高效的多。好好体会一下。

题目链接/文章讲解:替换数字

 

首先扩充数组到每个数字字符替换成 "number" 之后的大小。

例如 字符串 "a5b" 的长度为3,那么 将 数字字符变成字符串 "number" 之后的字符串为 "anumberb" 长度为 8。

然后从后向前替换数字字符,也就是双指针法,过程如下:i指向新长度的末尾,j指向旧长度的末尾。

类似这样,但是我们可以思考一个问题,为什么我们要从后往前去处理而不是从前往后呢,因为从前往后的话,我们要处理更多数组的移动,比如a1b2c3,从前处理的话后面所有的地方都要移动,都会改变,所以我们从后向前处理。,我们来看代码

先对数组进行扩容,在遍历字符串的时候出现数字字符就将长度+5处理,然后根据扩容的数组长度去new一个新数组,再将输入的字符读取进创建新数组对应的位置,再从后往前进行遍历,,碰到数字就从最后一位开始往前遍历,没碰到就把字符赋值给对应的位置。

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String s = sc.next();int len = s.length();for (int i = 0; i < s.length(); i++) {if (s.charAt(i) >= 0 && s.charAt(i) <= '9') {len += 5;}}char[] ret = new char[len];for (int i = 0; i < s.length(); i++) {ret[i] = s.charAt(i);}for (int i = s.length() - 1, j = len - 1; i >= 0; i--) {if ('0' <= ret[i] && ret[i] <= '9') {ret[j--] = 'r';ret[j--] = 'e';ret[j--] = 'b';ret[j--] = 'm';ret[j--] = 'u';ret[j--] = 'n';} else {ret[j--] = ret[i];}}System.out.println(ret);}
}

http://www.dtcms.com/wzjs/335713.html

相关文章:

  • wordpress视频网站采集器网站统计数据
  • 怎么学建设网站门户网站排行榜
  • 制作一个网站怎么架构cilimao磁力猫最新版地址
  • 潍坊网站建设公司推荐百度搜索关键词怎么刷上去
  • 重庆无障碍网站建设关键词在线听
  • wordpress 购物网站建站宝盒
  • 山西省建设局网站seo网站推广专员
  • 做高端网站的公司百度站长平台官网登录入口
  • 爱狼戈网站建设提交百度收录
  • 手机网站做安卓客户端企业网站建设方案策划书
  • 有做火币网这种网站的吗优化网站关键词优化
  • 武汉专业网站做网页云南疫情最新数据消息中高风险地区
  • 专业网站的公司蚂蚁链接bt链接
  • 兰州网站建设公司排名信息流优化师简历怎么写
  • 网站登记表百度发作品入口在哪里
  • 张店区创业孵化中心有做网站的吗游戏网站交换友情链接
  • 什么企业做网站比较好百度sem推广
  • 如何做网站滚动条怎样下载优化大师
  • 网站的费用可以做无形资产吗百度网址大全
  • 做网站友情链接都写什么seo优化技术招聘
  • 重庆市建设安全监督站的网站精准推广
  • 网站优化指标长治seo顾问
  • 企业网站设计请示什么时候友情链接
  • 产品展示类网站模板今日热点新闻事件2022
  • 咔咔做受视频网站做网站公司哪家正规
  • 中山做企业网站临沂百度联系方式
  • 云南红舰工贸有限公司的网站建设百度竞价优化软件
  • 做网站在哪里建站合肥网络公司seo
  • 褚橙的网站建设东莞seo建站优化工具
  • 做网站用云虚机还是ecs免费的html网站