标签:char String int 557 单词 split 字符串 III chars
Leetcode链接:557. 反转字符串中的单词 III
题目描述
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例:
输入:“Let’s take LeetCode contest”
输出:“s’teL ekat edoCteeL tsetnoc”
提示:
在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
方法一:原数组修改
class Solution {
//1.修改原数组
public String reverseWords(String s) {
int n = s.length();
if(n == 0 || n == 1) return s;
char[] chars = s.toCharArray();
int i = 0;
while(i < n){
int start = i;
//找空格
while(i < n && chars[i] != ' '){
i++;
}
//字符串反转
int left = start;
int right = i - 1;
while(left < right){
swap(chars, left, right);
left ++;
right --;
}
//跳过空格
while(i < n && chars[i] == ' '){
i++;
}
}
return String.valueOf(chars);
}
public void swap(char[] chars, int i, int j){
char tmp = chars[i];
chars[i] = chars[j];
chars[j] = tmp;
}
}
方法二:切割字符串(自己解法)
class Solution {
public String reverseWords(String s) {
int len = s.length();
if(len == 0) return s;
String[] split = s.split(" ");
String result = reverse(split[0]);
for(int i = 1; i < split.length; i ++){
result = result + ' ' + reverse(split[i]);
}
return result;
}
public String reverse(String subStr){
char[] chars = subStr.toCharArray();
int i = 0;
int j = chars.length - 1;
while(i < j){
char tmp = chars[i];
chars[i] = chars[j];
chars[j] = tmp;
i++;
j--;
}
return String.valueOf(chars);
}
}
标签:char,String,int,557,单词,split,字符串,III,chars 来源: https://blog.csdn.net/weixin_43999327/article/details/119865278
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。