题目
题目链接
分析
题目的意思是给我们一个字符串数组和一个分隔符,让我们按照分隔符把字符串数组分割成新的字符串数组。
看到这个描述,这不就是直接就是利用 按照分隔符分割字符串的系统库函数split()
,这个函数的意思就是 把一个字符串按照你给定的分隔符分割成字符串数组,如:“one.two.three”
public static void main(String[] args) {
String s = "one.two.three";
String[] strings = s.split(".");
System.out.println(Arrays.asList(strings));
}
运行代码后发现:
????
什么鬼,不应该是 [one, two, three]
才对嘛,点击查看字符串的split()方法查看源码,注释上明确写了,split()参数是正则表达式,而.
在正则表达式有特殊的含义,所以我们应该参数写\\.
,利用转义字符进行转义,写出的代码如下:
public static void main(String[] args) {
String s = "one.two.three";
String[] strings = s.split("\\.");
System.out.println(Arrays.asList(strings));
}
运行结果:
代码
我们现在已经知道了如何利用给定分割字符分割字符串了,我们就可以写代码了。
class Solution {
public List<String> splitWordsBySeparator(List<String> words, char separator) {
List<String> res = new ArrayList<>();
for(String s : words) {
// 按照给定分割字符分割字符串
String[] str = s.split("\\"+String.valueOf(separator));
for(String st : str) {
// 为了去除空字符串
if(st != null && st.length() > 0)
res.add(st);
}
}
return res;
}
}
运行: