编写以下两个函数
以空格(单个或多个)为分隔符,将line中的元素抽取出来,放入一个List/
public static List convertStringToList(String line)
/在list中移除掉与str内容相同的元素/
public static void remove(List list, String str)
裁判测试程序:
*public class Main {
/covnertStringToList函数代码/
加粗样式 /remove函数代码/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNextLine()){
List list = convertStringToList(sc.nextLine());
System.out.println(list);
String word = sc.nextLine();
remove(list,word);
System.out.println(list);
}
sc.close();
}
样例说明:底下展示了4组测试数据。
输入样例
1 2 1 2 1 1 1 2
1
11 1 11 1 11
11
2 2 2
1
1 2 3 4 1 3 1
1
输出样例
[1, 2, 1, 2, 1, 1, 1, 2]
[2, 2, 2]
[11, 1, 11, 1, 11]
[1, 1]
[2, 2, 2]
[2, 2, 2]
[1, 2, 3, 4, 1, 3, 1]
[2, 3, 4, 3]
思路:1.转化时要注意最后一个元素,所以跳出循环以后还要再次判断一下。
2.remove时可以采用list.removeAll()这个方法,构建一个集合s,然后把集合s里面所有的数都自动remove掉。
public static List<String> convertStringToList(String line)
{
List<String> s = new ArrayList<String>();
String str = "";
for(int i=0;i<line.length();i++)
{
char c = line.charAt(i);
if(c==' ')
{
if(!str.equals("")) s.add(str);
str="";
}
else {
str+=c;
}
}
if(!str.equals("")) s.add(str); //若str非空,则把元素添加进去。
return s;
}
public static void remove(List<String> list, String str)
{
List<String> s = new ArrayList<String>();
s.add(str);
list.removeAll(s);
}