当前位置:网站首页>字符串的反转练习 344、541、557、151
字符串的反转练习 344、541、557、151
2022-04-22 14:12:00 【借点头发吧】
151. 翻转字符串里的单词
给定一个字符串,逐个翻转字符串中的每个单词。
示例 1:
输入: “the sky is blue”
输出: “blue is sky the”
示例 2:
输入: " hello world! "
输出: “world! hello”
解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
示例 3:
输入: “a good example”
输出: “example good a”
解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
说明:
无空格字符构成一个单词。
输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
题解:
双指针,倒序遍历,每确定一个单词添加至res,最后拼接成字符串
sloution:
class Solution {
public String reverseWords(String s) {
s=s.trim();
int j=s.length()-1,i=j;
StringBuilder res=new StringBuilder();
while(i>=0){
while(i >= 0 && s.charAt(i) != ' ') i--; // 搜索首个空格
res.append(s.substring(i + 1, j + 1) + " "); // 添加单词
while(i >= 0 && s.charAt(i) == ' ') i--; // 跳过单词间空格
j = i; // j 指向下个单词的尾字符
}
return res.toString().trim(); // 转化为字符串并返回
}
}
541. 反转字符串 II
给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。
如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
示例:
输入: s = “abcdefg”, k = 2
输出: “bacdfeg”
提示:
该字符串只包含小写英文字母。
给定字符串的长度和 k 在 [1, 10000] 范围内。
题解:
1)双指针 注意String对象是不可变对象,可以使用toCharArray()
2k为一组,前k个元素反转,后k个元素保持不变。
sloution:
class Solution {
public String reverseStr(String s, int k) {
char[] ch = s.toCharArray();
for(int i=0;i<ch.length;i+=2*k){
int left=i;
int right=(i+k-1<ch.length)?i+k-1:ch.length-1;//越界
while (left <= right){
char temp = ch[left];
ch[left] = ch[right];
ch[right] = temp;
left++;
right--;
}
}
String str = new String(ch);
return str;
}
}
344. 反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。
示例 1:
输入:[“h”,“e”,“l”,“l”,“o”]
输出:[“o”,“l”,“l”,“e”,“h”]
示例 2:
输入:[“H”,“a”,“n”,“n”,“a”,“h”]
输出:[“h”,“a”,“n”,“n”,“a”,“H”]
题解:双指针
sloution:
class Solution {
public void reverseString(char[] s) {
int left=0;
int right=s.length-1;
while(left<right){
char tmp=s[left];
s[left]=s[right];
s[right]=tmp;
left++;
right--;
}
}
}
557. 反转字符串中的单词 III
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例:
输入:“Let’s take LeetCode contest”
输出:“s’teL ekat edoCteeL tsetnoc”
class Solution {
public String reverseWords(String s) {
String[] strs=s.split(" ");
StringBuffer buffer = new StringBuffer();
for(int i=0;i<strs.length;i++){
buffer.append(new StringBuffer(strs[i]).reverse().toString());
buffer.append(" ");
}
return buffer.toString().trim();
}
}
ToString()是转化为字符串的方法 Trim()是去两边空格的方法
Java StringBuffer 和 StringBuilder 类
当对字符串进行修改时,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
ToString()是转化为字符串的方法 Trim()是去两边空格的方法
版权声明
本文为[借点头发吧]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_47866171/article/details/108305298
边栏推荐
- 2022焊工(初级)考试试题及答案
- 专家系统的开发环境
- C Primer Plus---程序清单13.2 reduto.c
- [robot learning] learning record of mobile robot odometer
- LeetCode-819 最常见的单词
- Wonderful linkage! Principle and practice of openmldb pulsar connector
- 樹莓派開發筆記(十二):入手研華ADVANTECH工控樹莓派UNO-220套件(一):介紹和運行系統
- Crater encountered in calling bash script by makefile
- Getting started with BCC
- Thoughts on dealing with high concurrency problems
猜你喜欢

那些年我们一起优化的SQL

PLSQL developer file encoding format setting

Blocking queue-

C语言的三子棋,用22天总结了一份完美的SQL学习笔记

985 official announcement: international ranking is no longer a construction goal!

Timer--

Lors de l'obtention d'une valeur dans la base de données, la base de données a une valeur, mais elle est vide.

阻塞队列-

Golang: package management

Where do embedded software bugs come from and how do they go
随机推荐
Cannot read property 'forceupdate' of undefined - wechat developer tool reports an error
Redis相比memcached
IPv6 related
Mathorcup ideas sharing in 2022
Redis 批量删除数据(通配符)
双指针||有序数组去重 排序链表移除元素 26、27、83
A solution to the problem of buying and selling stocks by force deduction
Golang:包管理
【终于等到你】微信转发语音的方法 - 语音信息转发
Development notes of raspberry pie (12): start Advantech industrial control raspberry pie uno-220 Kit (I): introduction and operation of the system
Is it effective to control caching through meta information in HTML files? Is it used much at present?
PLSQL developer file encoding format setting
Recall, this year (Huashi 918 blood and tears paste)
Golang: package management
Multithreading primary
Translucenttb Chinese interface - Chinese menu - how to use - win11 taskbar transparent effect
CVPR 2022 Oral | 大连理工提出小样本识别DeepBDC,6项基准性能最好
Iclr2022 outstanding Thesis Award was released, Tsinghua University and National People's Congress won awards, and Zhejiang University nominated
Crater encountered in calling bash script by makefile
2022茶艺师(中级)考试模拟100题及模拟考试