文章目录
- 一【题目类别】
- 二【题目难度】
- 三【题目编号】
- 四【题目描述】
- 五【题目示例】
- 六【解题思路】
- 七【题目提示】
- 八【时间频度】
- 九【代码实现】
- 十【提交结果】
一【题目类别】
- 字符串
二【题目难度】
- 简单
三【题目编号】
- 557.反转字符串中的单词 III
四【题目描述】
- 给定一个字符串 s ,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
五【题目示例】
-
示例 1:
- 输入:s = “Let’s take LeetCode contest”
- 输出:“s’teL ekat edoCteeL tsetnoc”
-
示例 2:
- 输入: s = “God Ding”
- 输出:“doG gniD”
六【解题思路】
- Java版:开辟新的空间,找到字符串中的每个单词,反转加入新的字符串即可,需要注意空格的问题
- C版:没有开辟新的空间,在原字符串操作,依旧是找到字符串中每个单词,直接进行反转即可,以空格为分界
- 具体操作可以参考代码,比较简单
- 最后返回结果即可
七【题目提示】
- 1 < = s . l e n g t h < = 5 ∗ 1 0 4 1 <= s.length <= 5 * 10^4 1<=s.length<=5∗104
- s 包 含 可 打 印 的 A S C I I 字 符 。 s 包含可打印的 ASCII 字符。 s包含可打印的ASCII字符。
- s 不 包 含 任 何 开 头 或 结 尾 空 格 。 s 不包含任何开头或结尾空格。 s不包含任何开头或结尾空格。
- s 里 至 少 有 一 个 词 。 s 里 至少 有一个词。 s里至少有一个词。
- s 中 的 所 有 单 词 都 用 一 个 空 格 隔 开 。 s 中的所有单词都用一个空格隔开。 s中的所有单词都用一个空格隔开。
八【时间频度】
- Java版
- 时间复杂度: O ( n ) O(n) O(n),其中 n n n为输入字符串的长度
- 空间复杂度: O ( n ) O(n) O(n),其中 n n n为输入字符串的长度
- C版
- 时间复杂度: O ( n ) O(n) O(n),其中 n n n为输入字符串的长度
- 空间复杂度: O ( 1 ) O(1) O(1)
九【代码实现】
- Java语言版
package String;
/**
* @Author: IronmanJay
* @Description: 557.反转字符串中的单词 III
* @CreateTime: 2022-11-28 09:18
*/
public class p557_ReverseWordsInAStringIII {
public static void main(String[] args) {
String s = "Let's take LeetCode contest";
String res = reverseWords(s);
System.out.println("res = " + res);
}
public static String reverseWords(String s) {
StringBuffer sb = new StringBuffer();
int index = 0;
int len = s.length();
while (index < len) {
int left = index;
while (index < len && s.charAt(index) != ' ') {
index++;
}
int right = index - 1;
while (left <= right) {
sb.append(s.charAt(right));
right--;
}
while (index < len && s.charAt(index) == ' ') {
sb.append(' ');
index++;
}
}
return sb.toString();
}
}
- C语言版
#include<stdio.h>
#include<string.h>
char * reverseWords(char * s)
{
int index = 0;
int len = strlen(s);
while (index < len)
{
int left = index;
while (index < len && s[index] != ' ')
{
index++;
}
int right = index - 1;
while (left < right)
{
char temp = s[left];
s[left] = s[right];
s[right] = temp;
left++;
right--;
}
index++;
}
return s;
}
/*主函数省略*/
十【提交结果】
-
Java语言版
-
C语言版