557. Reverse Words in a String III
题目描述和难度
- 题目描述:
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 1:
输入: "Let's take LeetCode contest" 输出: "s'teL ekat edoCteeL tsetnoc"
注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
- 题目难度:简单。
- 英文网址:557. Reverse Words in a String III 。
- 中文网址:557. 反转字符串中的单词 III 。
思路分析
求解关键:实现翻转字符数组的部分,最后一定不要忘记把剩下没有翻转的,再翻转一次即可。
参考解答
参考解答1
public class Solution {
public String reverseWords(String s) {
int len = s.length();
if (len == 1) {
return s;
}
char[] charArr = s.toCharArray();
int begin = 0;
for (int i = 0; i < len; i++) {
if (s.charAt(i) == ' ') {
reverseCharArray(charArr, begin, i - 1);
begin = i + 1;
}
}
reverseCharArray(charArr, begin, len - 1);
return String.valueOf(charArr);
}
private void reverseCharArray(char[] arr, int l, int r) {
while (l < r) {
swap(arr, l, r);
l++;
r--;
}
}
private void swap(char[] arr, int l, int r) {
char temp = arr[l];
arr[l] = arr[r];
arr[r] = temp;
}
public static void main(String[] args) {
// 输入: "Let's take LeetCode contest"
// 输出: "s'teL ekat edoCteeL tsetnoc"
String s = "Let's take LeetCode contest";
Solution solution =new Solution();
String reverseWords = solution.reverseWords(s);
System.out.println(reverseWords);
}
}
本篇文章的地址为 https://liweiwei1419.github.io/leetcode-solution/leetcode-0557-reverse-words-in-a-string-iii ,如果我的题解有错误,或者您有更好的解法,欢迎您告诉我 liweiwei1419@gmail.com 。