表驱动分为三种,分别是:直接索引、索引表、阶梯索引。一般直接索引使用比较广泛,也容易想到。今天在网上看到了一笔试题,统计一个字符串中第一次出现且频率最高的字符。看到这道题以后,我觉得使用表驱动能很快、很容易地解决问题,下面是我使用表驱动给出的解法。
public static char statMostRateChar(String str) {
if (str != null && !"".equals(str)) {
int charsStat[] = new int[128];
int charsFirstIdx[] = new int[128];
int strLen = str.length();
for (int ch = 0; ch < 128;ch++) {
charsFirstIdx[ch] = strLen;
}
// 統計字符出現的次數
for (int idx = 0; idx < strLen; idx++) {
charsStat[str.charAt(idx)]++;
// 记录字符第一次出现的位置
if (idx < charsFirstIdx[str.charAt(idx)]) {
charsFirstIdx[str.charAt(idx)] = idx;
}
}
int mostRateChar = 0;
for (int ch = 1; ch < 128; ch++) {
if (charsStat[ch] == 0) {
continue;
}
// 找频率出现最高的字符
if (charsStat[mostRateChar] < charsStat[ch]) {
mostRateChar = ch;
// 出现频率一样时,选择出现在前面的数
} else if (charsStat[mostRateChar] == charsStat[ch]&&
charsFirstIdx[mostRateChar] > charsFirstIdx[ch]) {
mostRateChar = ch;
}
}
return (char) mostRateChar;
} else {
return '\0';
}
}
这是我对表驱动的一点认识,我觉得选择表驱动,提高代码的执行效率以及可读性,但同时却牺牲了存储空间。如果在不浪费大量空间的前提下,表驱动的确是一个不错的选择。
分享到:
相关推荐
表驱动法分为直接访问,索引访问,阶梯访问三种方式,分别对应相应代码,代码里有详细注释
项目任务驱动法应用于Java程序设计的教学改革与研究.pdf
“项目驱动”教学法在Java课程群中的应用研究——以湖南交通工程学院软件工程专业为例.pdf
单机版记忆游戏的设计与实现——Java语言任务驱动教学法应用案例.pdf
基于任务驱动法的Java教学模式探讨
基于任务驱动法的Java教学模式探讨.pdf
项目驱动法在Java Web开发教学中的应用.pdf
基于任务驱动法的“Java程序设计”有效课堂教学.pdf
Java语言教学中项目驱动教学法的应用.pdf
第1章您好—Java入门 第2章计算器—数据类型与表达式 第3章计算面积周长—方法与作用域 第4章打折计价—逻辑值与分支结构 第5章累加—循环结构 第6章除法运算—异常处理 第7章圆和矩形—类与对象 第8章动物类派生—...
基于项目驱动法的《Java程序设计》课程教学设计.pdf
多维任务驱动教学法在JAVA教学中的应用
Java项目开发课程中项目驱动教学法的应用设计
项目驱动教学法在Java课程设计中的应用.pdf
任务驱动教学法在Java编程教学中的应用.pdf
情境 项目驱动教学法在高校Java课程中的应用.pdf
“项目驱动”教学法在JAVA教学中的应用.pdf
项目驱动教学法在Java语言程序设计教学中的应用.pdf
探究项目驱动教学法在Java语言程序设计教学中的应用
项目化的任务驱动教学法在Java语言课程中的应用.pdf