题目链接
题目描述
这是一个函数实现题。你需要实现一个 commaTransformer
函数,该函数接受一个整数序列(数组)作为参数。
你的任务是将这个序列中的所有数字转换成一个单一的字符串,其中数字与数字之间用逗号 ,
分隔。
示例:
-
输入:
[1, 3, 5]
-
你的函数应返回:
"1,3,5"
-
输入:
[1]
-
你的函数应返回:
"1"
-
输入:
[]
(空序列) -
你的函数应返回:
""
解题思路
本题的核心是将一个整数数组格式化成一个逗号分隔的字符串。解决这个问题的关键在于优雅地处理分隔符——确保它只出现在数字之间,而不会出现在开头或结尾。
-
处理边界情况:
- 空数组: 如果输入的数组是空的,根据示例应直接返回一个空字符串
""
。这是最先需要处理的特殊情况。 - 单元素数组: 如果数组只有一个元素,那么直接将这个数字转换为字符串返回即可,不需要添加任何逗号。
- 空数组: 如果输入的数组是空的,根据示例应直接返回一个空字符串
-
通用方法 (字符串构建): 对于包含多个元素的数组,最通用的方法是使用一个字符串构建器(如 C++ 的
stringstream
或 Java 的StringBuilder
),或者利用语言内置的join
功能(如 Python)。通用逻辑: a. 将数组的第一个元素添加到结果字符串中。 b. 然后,从数组的第二个元素开始循环。 c. 在每次循环中,先向结果字符串中添加一个逗号
,
,再添加当前元素的字符串形式。 d. 这样可以保证逗号只被插入到元素之间。 -
各语言的实现策略:
- C++:
std::stringstream
是处理此类问题的理想工具。它能高效地拼接不同类型的数据,避免了多次std::string
的内存分配。 - Java:
StringBuilder
是可变字符串,非常适合循环构建。更现代、更简洁的方法是使用String.join()
,它可以接收一个分隔符和一个可迭代的字符串集合,一步到位完成拼接。这需要先将int[]
转换为String
的流。 - Python: Python 提供了最直接的解决方案。
str.join()
方法是专门为此类任务设计的。我们只需先用列表推导式将所有整数转换为字符串,然后调用",".join(...)
即可。
- C++:
代码
注意:以下是你需要提交的全部内容,即在牛客网给定的模板中填写的代码。
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 整理出一个将序列中的数字以逗号隔开从而得到的字符串
* @param a int整型vector 需要整理的序列 a
* @return string字符串
*/
std::string commaTransformer(std::vector<int>& a) {
if (a.empty()) {
return "";
}
std::stringstream ss;
ss << a[0]; // 先放入第一个元素
for (size_t i = 1; i < a.size(); ++i) {
ss << "," << a[i]; // 从第二个元素开始,先加逗号再加数字
}
return ss.str();
}
};
import java.util.*;
import java.util.stream.Collectors;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 整理出一个将序列中的数字以逗号隔开从而得到的字符串
* @param a int整型一维数组 需要整理的序列 a
* @return string字符串
*/
public String commaTransformer(int[] a) {
if (a == null || a.length == 0) {
return "";
}
// 使用Stream API和String.join,代码非常简洁
// 1. 将int数组转换为IntStream
// 2. 将每个int映射为String对象
// 3. 使用Collectors.joining以逗号作为分隔符进行连接
return Arrays.stream(a)
.mapToObj(String::valueOf)
.collect(Collectors.joining(","));
}
}
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 整理出一个将序列中的数字以逗号隔开从而得到的字符串
# @param a int整型一维数组 需要整理的序列 a
# @return string字符串
#
class Solution:
def commaTransformer(self, a: List[int]) -> str:
# 1. 使用列表推导式将所有整数转换为字符串
# 2. 使用 ",".join() 方法将列表中的所有字符串用逗号连接起来
# 这种方法优雅地处理了所有情况(空列表、单元素、多元素)
return ",".join([str(num) for num in a])
算法及复杂度
- 算法: 字符串构建 / 序列连接。
- 时间复杂度:
,其中
是最终生成字符串的总长度。算法需要遍历所有数字,并将它们转换为字符串形式进行拼接。总操作量与最终字符串的长度成正比。
- 空间复杂度:
。需要额外的空间来存储构建出的新字符串。