今晚刚做完迅雷的校招笔试题,感觉挺郁闷的,在这里跟大家分享下第一道编程题。
1、 题目
2、 输入输出及样例
输入输出要求:
样例:
3、 我的思路
题目里也提示了用正则表达式来匹配,所以没有太多需要思考的。但是有个让我很是郁闷的问题就是题目说输入可能是多行,我想了很久没想出该怎么判断这多行是否结束了,这让我很费解。下面的实现这是基于【单行输入】。
4、 我的实现
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Tiqu
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
Pattern pattern = Pattern.compile("thunder://[A-Za-z0-9+/=]*");
Matcher matcher = pattern.matcher(input);
List<String> result= new ArrayList<String>();
int count = 0;
while(matcher.find())
{
String get = matcher.group();
get = get.substring(0, get.length()-1);
if(!result.contains(get))
{
result.add(get);
count++;
}
}
if(count == 0)
{
System.out.println("no");
}
else
{
System.out.println(count);
for(String s:result)
{
System.out.println(s);
}
}
}
}
5、 总结
以上只是基于单行输入来做的,所以测试只通过了50%。至于多行输入,我至今还没搞清楚该怎么判断输入结束,所以没写这种情况,也请实现了的大神不吝赐教,不胜感激!