由于项目提交测试,上班时间比较无聊,于是乎瞎逛论坛回答问题赚积分。无意间看到开源中国老大红薯发的贴,是关于
一道笔试题的。解题的思路是通过有穷状态机来解决,看了一下思路,自己也写了写java版本的。(原文是C++版本的)
题目的要求是:一个字符串由多个单词组成,这些单词由一个或者连连续多个空格分隔开,请写一个程序统计输入的字符串
有多少个单词。
说明一下,此题解决方法不唯一,也有比我用的方法更简单。在这里,只是想针对有穷状态机算法来解决,顺便了解一
下该算法。
实现原理:
字母表:英文字母和空格。
状态:起始状态、单词状态、空格状态和接受状态。
转换规则:
起始状态下读到非空格,进入单词状态。
单词状态下读到空格,进入空格状态。
空格状态下读到非空格,进入单词状态。
在起始状态、单词状态和空格状态下读到’/0’,进入结束状态。
每次进入单词状态,单词数计数加1。
package com.cetus.test;
public class DFA {
public enum State {
STAT_START, STAT_IN_WORD, STAT_IN_SPACE
};
public static int DFATest(String str) {
State state = State.STAT_START;
int numOfWords = 0;
for (int i = 0; i < str.length(); i++) {
char aChar = str.charAt(i);
if (aChar != '\0') {
switch (state) {
case STAT_START: {
if(aChar ==' '){
state=State.STAT_IN_SPACE;
}else{
numOfWords++;
state=State.STAT_IN_WORD;
}
break;
}
case STAT_IN_WORD: {
if(aChar ==' '){
state=State.STAT_IN_SPACE;
}
break;
}
case STAT_IN_SPACE: {
if(aChar !=' '){
state=State.STAT_IN_WORD;
numOfWords++;
}
break;
}
default:break;
}
}
}
return numOfWords;
}
public static void main(String[] args) {
String strWords="i am cetus, how are you?";
System.out.println(DFATest(strWords));
}
}
分享到:
相关推荐
交流JTAG跟我学JTAG协议破解——第一弹初识JTAGTAP状态机.pdf
初识C++ 初识C++ 初识C++初识C++初识C++初识C++初识C++
初识云计算初识云计算初识云计算初识云计算初识云计算初识云计算初识云计算初识云计算
初识计算机初识计算机初识计算机
python 列表初识,通过此代码,你能够了解到python的列表操作
初识计算机PPT课件.pptx
初识C语言.pdf
jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识及JIT优化jvm初识...
初识Scratch.ppt
三年级信息技术课程《初识画图》课件内容 因为要参加比赛,所属机房 装不上
本课是初中信息技术初识excel的教学设计
计算机的组成 打印机 耳 机 幼儿园计算机课程《初识计算机 全文共15页,当前为第12页。 2. 计算机的组成 音 响 摄像头 幼儿园计算机课程《初识计算机》全文共15页,当前为第13页。 3. 思考 计算机能用来做什么呢? ...
初识电脑朋友课件
初识ERP初识ERP
初识JavaScript(源代码)初识JavaScript(源代码)初识JavaScript(源代码)初识JavaScript(源代码)初识JavaScript(源代码)初识JavaScript(源代码)初识JavaScript(源代码)初识JavaScript(源代码)初识...
【教学难点】 清楚计算机软件系统有哪些,明白操作系统软件和应用软件的区别; 【教学策略】 1、小组合作查找资料,整理资料,最后汇报讨论; 2、结合教学环境实情,通过PPT将一些可视化的图片展现给学生观看,利用...
初识FLASH动画.ppt
初识jQuery,12课时的第一课,帮助你了解jQuery
06初识Scratch.ppt
初识专家系统初识专家系统初识专家系统初识专家系统初识专家系统初识专家系统