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实现判断时间是否为合法时间
最近遇到一个需求,输入字符串,判断为日期的话再进行后面的比较大小之类的操作,但是合法日期的格式也是比较多的,利用正则表达式又太长了.所以后面利用的方法就是,先把输入的字符串转成一种固定的时间格式,然后 ...
随机推荐
- 简单的使用gulp生成雪碧图
有一个在线工具:https://www.toptal.com/developers/css/sprite-generator.生成雪碧图是极其方便的. 现在呢,我们来试试用gulp来生成雪碧图. 第一 ...
- Int2BinaryString.java
/****************************************************************************** * Compilation: javac ...
- Iptables防火墙规则使用
iptables是组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤.封包重定向和网络地址转换(NAT)等功能 ...
- 包含jdk和nginx的基础镜像
目的 制作一个基础镜像,包含jdk和nginx,这样要将java项目或一些前端页面做成容器,可以稍作修改引用该镜像. Dockerfile FROM alpine:3.8 ENV \ LANG=C.U ...
- js(=>) 箭头函数 详细解说 案例大全
ES6标准新增了一种新的函数:Arrow Function(箭头函数). 为什么叫Arrow Function?因为它的定义用的就是一个箭头: x => x * x 上面的箭头函数相当于: fu ...
- pandas使用
一.pd.cut()与pd.qcut()的区别 假设有一组人员数据,而你希望将它们划分为不同的年龄组 ages = [18,20,22,25,27,21,23,37,31,61,45,32] bins ...
- Hibernate_事务管理
今天学习Hibernate,发现当我在执行下面操作时,不会对数据库产生任何效果,就是说Customer对象并不会保存到数据库中 Session session = HibernateUtils.ope ...
- Spring_bean的实例化时机
前言:创建Java对象 public class User { private String name; private Integer age; public User() { System.out ...
- JS中的offsetWidth、offsetHeight、clientWidth、clientHeight等等的详细介绍
javascript中offsetWidth.clientWidth.width.scrollWidth.clientX.screenX.offsetX.pageX 原文:https://www.cn ...
- android 插件合集
1.增加编译速度:fastdex-plugin 2.gradle 版本网站http://services.gradle.org/distributions/