Ex 6_4 判断序列是否由合法单词组成..._第六次作业

设字符串为s,字符串中字符的个数为n,vi[i]表示前i+1个字符是否能组成有效的单词vi[i]=true表示能组成有效的单词,vi[i]=false表示不能组成有效的单词,在每个字符串前加一个空格,设vi[0]=true.只要有一个j满足vi[j]=true并且s[j+1,n-1]是一个有效的单词则整个字符串能重建为由合法单词组成的序列。
package org.xiu68.ch06.ex6; import java.util.HashSet;
import java.util.Set; //利用动态规划算法判断一个字符串是否由有效的单词组成,若是则输出单词序列,算法的运行时间不超过n的平方
public class Ex6_4 { private static Set<String> wordSet; public static void main(String[] args) {
// TODO Auto-generated method stub
wordSet=new HashSet<>();
wordSet.add("it");
wordSet.add("was");
wordSet.add("the");
wordSet.add("algorithoms");
wordSet.add("best");
wordSet.add("is");
wordSet.add("of");
wordSet.add("times");
wordSet.add("interesting");
wordSet.add("good");
String strs1=" itwasthebestoftimesgood";
checkWord(strs1); //true:it was the best of times good String strs2=" algorithomsisinteresting";
checkWord(strs2); //true:algorithoms is interesting String strs3=" thisisastring";
checkWord(strs3); //false:
} public static void checkWord(String strs){
boolean[] vi=new boolean[strs.length()]; //记录前i个字符组成的子串能否分割成有效的单词
vi[0]=true; int[] index=new int[strs.length()]; //记录以该下标为终点的合法单词的起始位置
index[0]=-1; //不能构成合法单词 for(int i=1;i<=strs.length()-1;i++){ //判断前i+1个字符组成的子串能否分割成有效的单词
for(int j=i-1;j>=0;j--){
String strTemp=strs.substring(j+1,i+1);
if(vi[j] && isAWord(strTemp)){
vi[i]=true;
index[i]=j+1;
break;
}
else{
vi[i]=false;
index[i]=-1;
}
} }//外for //打印出单词序列
System.out.print(vi[strs.length()-1]+":");
if(vi[strs.length()-1]){
String words="";
int b=strs.length()-1;
int a=index[b];
while(a!=-1){
words=strs.substring(a,b+1)+" "+words;
b=a-1;
a=index[b];
}
System.out.println(words);
} } //判断单词是否合法
public static boolean isAWord(String str){
if(wordSet.contains(str))
return true;
return false;
}
}
Ex 6_4 判断序列是否由合法单词组成..._第六次作业的更多相关文章
- Linux C判断日期格式是否合法
Title:Linux C判断日期格式是否合法 --2013-10-11 11:54 #include <string.h> // strlen() , strncpy() #includ ...
- PHP判断ip地址是否合法
1.获取真正ip地址 function get_ip(){ //判断服务器是否允许$_SERVER if(isset($_SERVER)){ if(isset($_SERVER[HTTP_X_FORW ...
- python点滴:判断字符串是否为合法json格式
在一些情况下,我们需要判断字符串是否为合法json格式. 思路很简单:尝试对字符串使用json.loads(),如果不是合法json格式,则会抛出ValueError异常. 示例如下: import ...
- 判断序列是否为二叉排序树的后序遍历 python
题目:给定一个序列,判断其是不是一颗二叉排序树的后序遍历结果 分析:首先要知道什么是排序二叉树,二叉排序树是这样定义的,二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左 ...
- [Python]判断序列是否为空的正确姿势
本篇文章起源于StackOverflow上一个热度非常高的问题: 我该如何判断一个Python列表是否为空? @Ray Vega (提问者) 举例说明,现在我得到了如下代码: a = [] 我如何该检 ...
- POJ 1094 Sorting It All Out (拓扑排序,判断序列是否唯一,图是否有环)
题意:给出n个字符,m对关系,让你输出三种情况: 1.若到第k行时,能判断出唯一的拓扑序列,则输出: Sorted sequence determined after k re ...
- PHP 关于判断输入日期是否合法
合法要求 一年仅十二个月 4,6,9,11月仅30天,1,3,5,7,8,10,12月仅31天 闰年2月29天,否则28天 输入的变量年,月,日为数字 代码: <?php //PHP中判断输入的 ...
- Python面试题: 判断IP地址是否合法
题目: 给出一个字符串, 判断其是否是是合法的IP(IPv4)地址 思路 将字符串按"."分割成4段得到一个列表 逐个判断列表中的字符串是否数字格式并且在0~255之间, 是在新列 ...
- java实现判断时间是否为合法时间
最近遇到一个需求,输入字符串,判断为日期的话再进行后面的比较大小之类的操作,但是合法日期的格式也是比较多的,利用正则表达式又太长了.所以后面利用的方法就是,先把输入的字符串转成一种固定的时间格式,然后 ...
随机推荐
- Eclipse集成Gradle 【Eclipse在线安装Gradle插件方法】
本章将介绍了Eclipse集成Gradle.以下是将Gradle插件添加到Eclipse的步骤. 步骤1 - 打开Eclipse Marketplace 打开在系统中安装好的Eclipse. 转到 J ...
- vue router.push(),router.replace(),router.go()
1.router.push(location)=====window.history.pushState 想要导航到不同的 URL,则使用 router.push 方法.这个方法会向 history ...
- PHP的内存限制 Allowed memory size of 134217728 bytes exhausted (tried to allocate 1099 bytes) in
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 1099 bytes) in Fa ...
- 一次完整的 HTTP 请求过程
一次完整的HTTP请求过程从TCP三次握手建立连接成功后开始,客户端按照指定的格式开始向服务端发送HTTP请求,服务端接收请求后,解析HTTP请求,处理完业务逻辑,最后返回一个HTTP的响应给客户端, ...
- python小demo-01: 线程池+多进程实现cpu密集型操作
起因: 公司有一个小项目,大概逻辑如下: 服务器A会不断向队列中push消息,消息主要内容是视频的地址,服务器B则需要不断从队列中pop消息,然后将该视频进行剪辑最终将剪辑后的视频保存到云服务器.个人 ...
- pycharm git无法使用问题(待解决)
PyCharm 2017.3.1 (Community Edition)Build #PC-173.3942.36, built on December 14, 2017JRE: 1.8.0_152- ...
- .Net MVC个人笔记
关于转向的问题,目前知道的是Response.Redirect 和 location.href 我现在有两个controller,Home和Test <h2>this is Home< ...
- PHP--traits
从PHP5.4.0起,PHP实现了代码复用的一个方法,称为traits. traits试图用来解决像PHP这样的面向对象语言中只支持单继承的问题.它的作用是允许我们在不使用继承的情况下为一个类增加功能 ...
- Spark记录-SparkSQL一些操作
scala>val spark=new org.apache.spark.sql.SQLContext(sc) user.json {"age":"45" ...
- JAVA-大白话探索JVM-类加载器(一)
JVM??? Java语言的一个非常重要的特点就是与平台的无关性.而使用Java虚拟机是实现这一特点的关键.JVM是Java Virtual Machine(Java虚拟机)的缩写,Java程序编译后 ...