算法通关村第十二关-白银挑战字符串经典题目

大家好我是苏麟 , 今天带来字符串相关的题目 .

大纲

    • 反转问题
      • 字符串反转
      • K个一组反转
      • 仅仅反转字母
      • 反转字符串中的单词

反转问题

字符串反转

描述 :

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s的形式给出。

题目 :

LeetCode 344. 反转字符串 :

字符串反转

在这里插入图片描述
分析 :

这道题还是很简单的 , 只要把最前边和最后的元素调换就行了 , 用两个变量记录第一个元素下标 和 最后一个变量下标 , 操作变量来完成反转 .

解析 :

class Solution {public void reverseString(char[] s) {if(s.length == 0 ||s == null){return;}int left = 0;int right = s.length - 1;for(int i = 0 ;i < s.length / 2;i++){char temp = s[left];s[left] = s[right];s[right] = temp;left++;right--;}}
}

K个一组反转

描述 :

给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。

题目 :

LeetCode 541. 反转字符串 II :

f反转字符串

在这里插入图片描述
分析 :

我们直接按题意进行模拟就可以: 反转每个下标从 2k的倍数开始的,长度为 k的子串。若该子串长度不足k,则反转整个子串。

解析 :

class Solution {public String reverseStr(String s, int k) {char[] arr = s.toCharArray();int length = s.length();for(int i = 0;i < length;i+= 2 *k){exchangeArr(arr,i,Math.min(i + k,length) -1 );}return new String(arr);}public void exchangeArr(char[] arr, int left , int right){while(left < right){char a = arr[left];arr[left] = arr[right];arr[right] = a;left++;right--;}}
}

仅仅反转字母

描述 :

给你一个字符串 s ,根据下述规则反转字符串:

  • 所有非英文字母保留在原有位置。
  • 所有英文字母(小写或大写)位置反转。

返回反转后的 s 。

题目 :

LeetCode 917. 仅仅反转字母 :

仅仅反转字母

在这里插入图片描述
分析 :

将 s 中的所有字母单独存入栈中,所以出栈等价于对字母反序操作然后,遍历 s 的所有字符,如果是字母我们就选择栈顶元素输出。

解析 :

class Solution {public String reverseOnlyLetters(String s) {Stack<Character> stack = new Stack<>();for(char temp : s.toCharArray()){if(Character.isLetter(temp)){stack.push(temp);}}StringBuilder ans = new  StringBuilder();for(char temp : s.toCharArray()){if(Character.isLetter(temp)){ans.append(stack.pop());}else{ans.append(temp);}}return ans.toString();}
}

反转字符串中的单词

描述 :

给你一个字符串 s ,请你反转字符串中 单词 的顺序。

单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。

返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串

题目 :

LeetCode 151. 反转字符串中的单词 :

反转字符串中的单词

在这里插入图片描述
分析 :

我们可以借助 spilt 函数来分割单词 , 再用 可变字符串 添加单词 .

解析 :

class Solution {public String reverseWords(String s) {String[] s1 = s.split(" ");StringBuilder ans = new StringBuilder();for (int i= s1.length - 1; i >= 0 ;i--){if(s1[i] != ""){ans.append(s1[i]).append(" ");}}return ans.toString().trim();    }
}

这期就到这里 , 下期见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/210266.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

示波器探头讲解及案例分享

示波器探头讲解 示波器探头 分为X1、X10档&#xff1a; X1档&#xff0c;表示被测量的信号没有经过衰减进入示波器 X10档&#xff0c;表示被测量的信号衰减10倍进入示波器&#xff08;当示波器也设置为10X档&#xff0c;直接读数即可&#xff0c;但是当示波器设置为1X档&…

操作系统 day12(调度算法的评价指标)

评价指标 CPU利用率 系统吞吐量 周转时间 带权周转时间 等待时间 响应时间

用好说 AI 玩转奥特曼表情包,居然还能和他们聊个天

你喜欢奥特曼吗&#xff1f;你相信光吗&#xff1f; 如果你已经追完了特摄剧、刷完了大电影、用滥了那几个表情包&#xff0c;那不如来试试用 AI 给自己整点活儿新 “物料”。 不管是和奥特曼 “面对面” 聊天还是 “无中生有” 表情包&#xff0c;AI 都能做&#xff01; (※…

PDF 批量处理软件BatchOutput PDF mac中文版介绍

BatchOutput PDF mac是一款适用于 Mac 的 PDF 批量处理软件。它可以帮助用户将多个 PDF 文件进行异步处理&#xff0c;提高工作效率。 BatchOutput PDF 可以自动化执行许多任务&#xff0c;包括 PDF 文件的打印、转换、分割、压缩、加密、重命名等&#xff0c;而且它还可以将自…

解决 requests 库上传大文件速度慢的问题:从问题原因到解决方案

在我的加班日志里&#xff0c;经常会有一些日期和事件&#xff0c;这次我要写的是2023-03-24&#xff0c;当时的事件是追bug。 我遇到了一个困扰已久的问题&#xff0c;就是requests库上传大文件的速度非常慢。这个问题让我很头疼&#xff0c;因为我正在处理一个需要大量上传文…

工会排队模式系统,打破传统创新消费

​小编介绍&#xff1a;10年专注商业模式设计及软件开发&#xff0c;擅长企业生态商业模式&#xff0c;商业零售会员增长裂变模式策划、商业闭环模式设计及方案落地&#xff1b;扶持10余个电商平台做到营收过千万&#xff0c;数百个平台达到百万会员&#xff0c;欢迎咨询。 在…

GIs篇-坐标系

1.坐标系 2000国家大地坐标系&#xff08;CGCS2000&#xff09; 【EPSG4490】 对应的纬度范围是&#xff1a; 最小 (-180, -85.05112877980659 )&#xff0c;最大 ( 180, 85.05112877980659 ) WGS84坐标系 【EPSG4326】 格式&#xff1a;[22.37&#xff0c;114.05] 4326地图扁 …

PMP对项目工程师有用吗?

一、什么是项目工程师&#xff1f; 项目工程师是指在各个领域负责技术操作、设计、管理以及评估能力的人员。他们通常担当项目的实施和执行角色&#xff0c;在开发或控制类项目中发挥重要作用。有时&#xff0c;项目工程师的称号还可以用来表示在某个领域取得专业资格的人员。…

微信小程序实现类似Vue中的computed、watch功能

微信小程序实现类似Vue中的computed、watch功能 构建npm使用 构建npm 创建包管理器 进入小程序后&#xff0c;打开终端&#xff0c;点击顶部“视图” - “终端” 新建终端 使用 npm init -y初始化包管理器&#xff0c;生成一个package.json文件 安装 npm 包 npm install --…

centos7 系统keepalived 定时执行脚本

安装keepalived yum install -y keepalived 修改配置文件 配置文件路径 /etc/keepalived 配置文件内容 global_defs {router_id localhost.localdomain # 访问到主机&#xff0c;本机的hostname&#xff0c;需要修改 }vrrp_script chk_http_port {script "/etc/kee…

福州大学《嵌入式系统综合设计》实验五:图像裁剪及尺寸变换

一、实验目的 在深度学习中&#xff0c;往往需要从一张大图中裁剪出一张张小图&#xff0c;以便适应网络输入图像的尺寸&#xff0c;这可以通过bmcv_image_crop函数实现。 实践中&#xff0c;经常需要对输入图像的尺寸进行调整&#xff0c;以适用于网络输入图片尺寸&#xff0…

数据库系统之常用数据库你用过几个?

MySQL 开发厂商&#xff1a;AB公司——>Sun公司——>甲骨文公司 最新版本&#xff1a;5.7.43、8.0.34 发行方式: 社区版&#xff08;MySQL Community Server&#xff09; 免费&#xff0c;MySQL不提供任何技术支持 商业版&#xff08;MySQL Enterprise Edition&#xff0…