一、问题描述
功能描述:键盘输入一句话输出一句话中最常的单词,如果最长的出现多次,返回第一个。
这句话只包含数字字母和标点。
输入: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