557.反转字符串中的单词III
557.1 题目
给定一个字符串 s
,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 1:
输入:s = "Let's take LeetCode contest"
输出:"s'teL ekat edoCteeL tsetnoc"
示例 2:
输入:s = "Mr Ding"
输出:"rM gniD"
提示:
1 <= s.length <= 5 * 10^4
s
包含可打印的 ASCII 字符。s
不包含任何开头或结尾空格。s
里至少有一个词。s
中的所有单词都用一个空格隔开。
557.2 题解
合成字符串数组
// 方法一:合成字符串数组
// 分割成字符串数组后每个字符串转成字符数组
// 使用Array.Reverse方法反转
// new string传入字符数组形成字符串丢到当前字符串中
// 使用string.Join方法拼接
static string ReverseWords1(string s)
{
// 分割字符串为单词数组
string[] words = s.Split(' ');
// 逐个单词反转
for (int i = 0; i < words.Length; i++)
{
char[] wordChars = words[i].ToCharArray();
Array.Reverse(wordChars);
words[i] = new string(wordChars);
}
// 拼接反转后的单词数组为结果字符串
return string.Join(" ", words);
}
拼接字符串
// 方法二:拼接字符串
// 分割成字符串数组后每个字符串转成字符数组
// 使用Array.Reverse方法反转
// new string传入字符数组形成字符串拼接到结果字符串
// 结果字符串使用Trim移除末尾多余的空格并返回
static string ReverseWords2(string s)
{
// 分割字符串为单词数组
string[] words = s.Split(' ');
// 逐个单词反转并拼接为结果字符串
string result = "";
for (int i = 0; i < words.Length; i++)
{
char[] wordChars = words[i].ToCharArray();
Array.Reverse(wordChars);
result += new string(wordChars) + " ";
}
// 移除末尾多余的空格
result = result.Trim();
return result;
}
557.3 代码
using System;
class Program
{
static void Main()
{
#region 题目
// 给定一个字符串 s ,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
// 示例 1:
// 输入:s = "Let's take LeetCode contest"
// 输出:"s'teL ekat edoCteeL tsetnoc"
// 示例 2:
// 输入:s = "Mr Ding"
// 输出:"rM gniD"
// 提示:
// 1 <= s.length <= 5 * 10^4
// s 包含可打印的 ASCII 字符。
// s 不包含任何开头或结尾空格。
// s 里 至少 有一个词。
// s 中的所有单词都用一个空格隔开。
#endregion
#region 测试
// 示例 1
string str1 = "Let's take LeetCode contest";
string result1 = ReverseWords1(str1);
Console.WriteLine($"示例1 方法1 输出:{result1}");
string result1_2 = ReverseWords2(str1);
Console.WriteLine($"示例1 方法2 输出:{result1_2}");
// 示例 2
string str2 = "Mr Ding";
string result2 = ReverseWords1(str2);
Console.WriteLine($"示例2 方法1 输出:{result2}");
string result2_2 = ReverseWords2(str2);
Console.WriteLine($"示例2 方法2 输出:{result2_2}");
#endregion
}
#region 答案
// 方法一:合成字符串数组
// 分割成字符串数组后每个字符串转成字符数组
// 使用Array.Reverse方法反转
// new string传入字符数组形成字符串丢到当前字符串中
// 使用string.Join方法拼接
static string ReverseWords1(string s)
{
// 分割字符串为单词数组
string[] words = s.Split(' ');
// 逐个单词反转
for (int i = 0; i < words.Length; i++)
{
char[] wordChars = words[i].ToCharArray();
Array.Reverse(wordChars);
words[i] = new string(wordChars);
}
// 拼接反转后的单词数组为结果字符串
return string.Join(" ", words);
}
// 方法二:拼接字符串
// 分割成字符串数组后每个字符串转成字符数组
// 使用Array.Reverse方法反转
// new string传入字符数组形成字符串拼接到结果字符串
// 结果字符串使用Trim移除末尾多余的空格并返回
static string ReverseWords2(string s)
{
// 分割字符串为单词数组
string[] words = s.Split(' ');
// 逐个单词反转并拼接为结果字符串
string result = "";
for (int i = 0; i < words.Length; i++)
{
char[] wordChars = words[i].ToCharArray();
Array.Reverse(wordChars);
result += new string(wordChars) + " ";
}
// 移除末尾多余的空格
result = result.Trim();
return result;
}
#endregion
}
557.4 运行结果
示例1 方法1 输出:s'teL ekat edoCteeL tsetnoc
示例1 方法2 输出:s'teL ekat edoCteeL tsetnoc
示例2 方法1 输出:rM gniD
示例2 方法2 输出:rM gniD
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com