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实现判断时间是否为合法时间
最近遇到一个需求,输入字符串,判断为日期的话再进行后面的比较大小之类的操作,但是合法日期的格式也是比较多的,利用正则表达式又太长了.所以后面利用的方法就是,先把输入的字符串转成一种固定的时间格式,然后 ...
随机推荐
- A1091. Acute Stroke
One important factor to identify acute stroke (急性脑卒中) is the volume of the stroke core. Given the re ...
- VUE在BODY上绑定enter事件
mounted () { this.bodyListener = (e) => { if (e.keyCode === 13 && e.target === document.b ...
- SVN:多版本库环境的搭建
一. 1,启动SVN sudo svnserve -d -r /home/data/svn/ 其中 -d 表示守护进程, -r 表示在后台执行 /home/data/svn/ 为svn的安装目录 2 ...
- Linux用户密码策略
使用Linux快三年了,从未想过Linux用户密码策略,从未把一本Linux的书从头看到尾(上学时的教材除外),故不知书上有无介绍,直到最近参加公司的信息安全稽核会议后才开始考虑Linux用户密码策略 ...
- SQL Server关于WITH CUBE、WITH ROLLUP和GROUPING使用
通过查看sql 2005的帮助文档找到了CUBE 和 ROLLUP 之间的具体区别:CUBE 生成的结果集显示了所选列中值的所有组合的聚合.ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚 ...
- Linux命令之ln
ln命令(是l不是i注意了) 用处:建立链接,分为软链接和硬链接 用法:下面讲 示例: 一.硬链接 我想给profile文件建立一个硬链接(硬链接就是把这个文件复制一份的意思) 硬链接hard建好了, ...
- 013、Dockerfile构建镜像(2019-01-02 周三)
参考https://www.cnblogs.com/CloudMan6/p/6830067.html Dockerfile构建镜像过程分析 root@docker-lab:~/111# ls ...
- Pool多进程示例
利用Pool类多进程实现批量主机管理 #!/usr/bin/python # -*- coding: UTF-8 -*- # Author: standby # Time: 2017-03-02 # ...
- Python XML操作
XML(可扩展性标记语言)是一种非常常用的文件类型,主要用于存储和传输数据.在编程中,对XML的操作也非常常见. 本文根据python库文档中的xml.etree.ElementTree类来进行介绍X ...
- luogu 1052 过河
神仙的博客,先copy了日后绝对删掉的,(因为我实在没耐心看懂啊..) 题解 step 1理解题意 在做这道题之前,一定要理解好题意,有一个需要特别注意注意的地方: 青蛙不是一定要跳到石头上[嗯... ...