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

大型门户网站建设推广注册公司需要提供的资料及公司注册流程

大型门户网站建设推广,注册公司需要提供的资料及公司注册流程,wordpress 最新模板,个人站长网站需要注册公司吗151.翻转字符串里的单词 建议:这道题目基本把 刚刚做过的字符串操作 都覆盖了,不过就算知道解题思路,本题代码并不容易写,要多练一练。 题目链接/文章讲解/视频讲解:代码随想录 我们这道题的思路是,先将整…

151.翻转字符串里的单词

建议:这道题目基本把 刚刚做过的字符串操作 都覆盖了,不过就算知道解题思路,本题代码并不容易写,要多练一练。

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

我们这道题的思路是,先将整个字符串反转,结束之后再定位每一个单词,然后再将单词进行反转,思路为什么是这样子的呢

为什么要先翻转整个字符集,再翻转单词,而不是直接翻转单词

假设输入字符串: "hello world"

方法1 (当前代码采用的方法):
1. 整体翻转: "dlrow olleh"
2. 单词翻转: "world hello"

方法2 (直接翻转单词):
这需要:
1. 找到每个单词的位置
2. 将单词存储到新的位置
3. 处理单词之间的空格
4. 可能需要额外的存储空间来临时保存单词

当前方法的优势:
1. 空间复杂度低:只需要在原字符串上操作,不需要额外空间存储单词
2. 实现简单:只需要简单的字符交换操作
3. 时间复杂度稳定:只需要遍历字符串固定的次数

直接翻转单词的劣势:
1. 需要额外的空间来存储单词
2. 需要处理单词移动的复杂逻辑
3. 实现起来更复杂,容易出错

 

如果我们直接对单词进行反转,我举个例子

“hello world”

反转之后应该是“world hello”

如果不将字符串先进行反转,我们直接反转的话,需要额外的空间,因为数组的操作从根本上来说是覆盖操作,那么我们在写world的时候就会将hello覆盖,所以我们需要格外的空间存储hello才行,这样就把逻辑变复杂了,如果先翻转再单词内部反转,适度简化了逻辑。

我们来看代码

public String reverseWords(String s) {// 第一步:调用removeSpace去除多余空格StringBuilder sb = removeSpace(s);// 第二步:反转整个字符串reverseString(sb, 0, sb.length() - 1);// 第三步:反转每个单词reverseEachWord(sb);// 返回最终结果return sb.toString();
}
private StringBuilder removeSpace(String s) {// 定义双指针,用于确定字符串的有效范围(去除首尾空格)int start = 0;int end = s.length() - 1;// 移动start指针,跳过开头的空格while (s.charAt(start) == ' ') start++;// 移动end指针,跳过结尾的空格while (s.charAt(end) == ' ') end--;// 创建StringBuilder存储结果StringBuilder sb = new StringBuilder();// 处理中间的空格,确保单词之间只有一个空格while (start <= end) {char c = s.charAt(start);// 当前字符不是空格,或者当前字符是空格但前一个字符不是空格时,才添加if (c != ' ' || sb.charAt(sb.length() - 1) != ' ') {sb.append(c);}start++;}return sb;
}
public void reverseString(StringBuilder sb, int start, int end) {// 使用双指针从两端向中间移动while (start < end) {// 交换start和end位置的字符char temp = sb.charAt(start);sb.setCharAt(start, sb.charAt(end));sb.setCharAt(end, temp);// 移动指针start++;end--;}
}
private void reverseEachWord(StringBuilder sb) {// start指向单词的开始,end指向下一个字符int start = 0;int end = 1;int n = sb.length();while (start < n) {// 移动end直到找到单词的结束位置(空格或字符串末尾)while (end < n && sb.charAt(end) != ' ') {end++;}// 反转当前单词reverseString(sb, start, end - 1);// 更新start和end,准备处理下一个单词start = end + 1;end = start + 1;}
}

卡码网:55.右旋转字符串

建议:题解中的解法如果没接触过的话,应该会想不到

题目链接/文章讲解:

右旋转

 我们思路和之前一样,先整体反转,然后反转前n个字符,再反转剩余字符,为什么这样做呢,因为可以

1. 空间复杂度O(1):只需要在原数组上操作
2. 实现简单:只需要基本的反转操作
3. 适用性强:对任意长度的字符串和任意的n值都适用
4. 不需要考虑字符移动和临时存储的复杂问题

我们来看代码:

public static void main(String[] args) {// 读取输入Scanner in = new Scanner(System.in);// 读取n值,表示第一部分的长度int n = Integer.parseInt(in.nextLine());// 读取待处理的字符串String s = in.nextLine();int len = s.length();// 将字符串转换为字符数组,方便操作char[] chars = s.toCharArray();// 三步反转法reverseString(chars, 0, len - 1);     // 步骤1:整体反转reverseString(chars, 0, n - 1);       // 步骤2:反转前n个字符reverseString(chars, n, len - 1);     // 步骤3:反转剩余字符// 输出结果System.out.println(chars);
}

public static void reverseString(char[] ch, int start, int end) {// 使用异或运算进行字符交换while (start < end) {// 三步异或操作实现两个字符的交换ch[start] ^= ch[end];    // a = a^bch[end] ^= ch[start];    // b = b^(a^b) = ach[start] ^= ch[end];    // a = (a^b)^a = bstart++;end--;}
}


文章转载自:

http://8a01rNJH.bnrnb.cn
http://3cpkiDDy.bnrnb.cn
http://bHO2r539.bnrnb.cn
http://gBT0FY44.bnrnb.cn
http://gfNKjXa7.bnrnb.cn
http://QBUbBxXD.bnrnb.cn
http://6a2Ka2OJ.bnrnb.cn
http://3GHX7NDs.bnrnb.cn
http://FC9Hx7GX.bnrnb.cn
http://6yvKYNpt.bnrnb.cn
http://pOUq8O45.bnrnb.cn
http://0tTD9fp2.bnrnb.cn
http://2B9SnnPr.bnrnb.cn
http://73ZMnO0K.bnrnb.cn
http://Ru3VX4gM.bnrnb.cn
http://4vqBbPMo.bnrnb.cn
http://zAX29AlC.bnrnb.cn
http://Mzyrk8rB.bnrnb.cn
http://YhTUmXe3.bnrnb.cn
http://BKAergB0.bnrnb.cn
http://UunhXd6y.bnrnb.cn
http://qqgBTXP1.bnrnb.cn
http://wl4whAGh.bnrnb.cn
http://26CKg0t6.bnrnb.cn
http://2aLsjqzp.bnrnb.cn
http://5MXGs1k6.bnrnb.cn
http://Zk3i3yQL.bnrnb.cn
http://1kAPSq1B.bnrnb.cn
http://2QtnjViG.bnrnb.cn
http://OO4XK0Os.bnrnb.cn
http://www.dtcms.com/wzjs/766241.html

相关文章:

  • 网站建设业务员培训参与网站建设与维护的要求
  • 九江做网站的公司哪里好如何做供求网站
  • 关于化妆品的网页设计专业网站优化电话
  • 用php做网站后台教育培训机构推荐
  • 洛阳做网站的公司哪家好帝国系统做网站地图
  • 废料回收网站建设微信小程序需要收费吗
  • 百度seo什么意思seo兼职招聘信息
  • 网站 功能需求营销网站建设公司效果
  • 成都市网站设计开发中国建筑业协会
  • ppt可以做网站吗织梦生成网站地图
  • 营销型企业网站建设的步骤网站一级域名和二级域名
  • 天津手网站开发有什么较好的网站开发框架
  • 专业营销网站建设企业官网建站网站
  • 同ip怎么做不同的网站中国砖瓦招聘求职平台
  • 企业网站建设要多少seo关键词优化推广哪家好
  • ps做网站页面设置为多大做暧暧网站
  • seo网站优化方案摘要wordpress密码漏洞
  • 建设明星网站的目的西安保障性住房建设投资中心网站
  • 南京网站建设排名wordpress 分类目录 标签转换器
  • 环球资源网官方网站手机网站建设的重要性
  • 网站建设与管理实践收获asp网站优缺点
  • 网站维护有哪些企业网站域名注册如何填写
  • 重庆网站建设夹夹虫公司.可信南京师范大学课程建设网站
  • 做排版的网站东莞市建设局官网
  • 天津旅游网站建设浉河网站建设
  • 温州网站建设公司排名wordpress文章加音频
  • 北京网站制作公司兴田德润可以不怎么往网站里做游戏
  • 公司网站建设推进表免费做网站软件下载
  • 网站建设官网怎么收费协会网站信息平台建设
  • 做网站如何分页全国公共建筑信息平台