一、问题描述
功能描述:键盘输入一句话输出一句话中最常的单词,如果最长的出现多次,返回第一个。
这句话只包含数字字母和标点。
输入:a aa,cat tiger.123dd
输出: tiger要求实现方法:
public String getLongString(String data)
{
//TODO
return "";
}
二、算法分析
1. 关键问题,如何用正则表达式来匹配标点
2. 如何判断一个子字符串里面都是字符。
其实这两个问题归于一点就是正则表达式使用。
特别要注意,正则表达式要匹配英文句号一定要加转义符号。
三、算法
public String getLongString1(String test)
{
String result = "";
String[] tempStrArr = test.split(REGEX_BIAODIAN);
int maxcount = 1;
for (int i = 0; i < tempStrArr.length; i++) {
if(tempStrArr[i].matches(REGEX_CHAR) && tempStrArr[i].length() > maxcount) {
result = tempStrArr[i];
maxcount = tempStrArr[i].length();
}
}
return result;
}
测试类:
package com.albertshao.csi.interview;
/**
* @author albertshao
*
*/
public class Main9 {
private static final String REGEX_CHAR = "^[a-z]*$";
private static final String REGEX_BIAODIAN = "[,\\.;\\:\\s]";
public static void main(String[] args) {
String test = "a aa,cat tiger.123dd";
Main9 m = new Main9();
System.out.println(m.getLongString1(test));
}
public String getLongString1(String test)
{
String result = "";
String[] tempStrArr = test.split(REGEX_BIAODIAN);
int maxcount = 1;
for (int i = 0; i < tempStrArr.length; i++) {
if(tempStrArr[i].matches(REGEX_CHAR) && tempStrArr[i].length() > maxcount) {
result = tempStrArr[i];
maxcount = tempStrArr[i].length();
}
}
return result;
}
}
运行结果:
tiger