Java实现 LeetCode 140 单词拆分II
2023-09-14 08:58:08 时间
class Solution {
public List<String> wordBreak(String s, List<String> wordDict) {
List<String> res = new ArrayList<>();
int max = 0, min = Integer.MAX_VALUE;
Set<String> set = new HashSet<>();
for (String word : wordDict) {
set.add(word);
max = Integer.max(max, word.length());
min = Integer.min(min, word.length());
}
boolean f[] = new boolean[s.length() + 1];
f[0] = true;
for (int i = 1; i < s.length() + 1; i++) {
for (int j = Math.max(i - max, 0); j <= i - min; j++) {
if (f[j] && set.contains(s.substring(j, i))) {
f[i] = true;
break;
}
}
}
if (f[s.length()]) {
dfs(s, res, new StringBuilder(), set, 0, max, min);
}
return res;
}
private void dfs(String s, List<String> res, StringBuilder sb, Set<String> set, int index, int max, int min) {
if (index == s.length()) {
sb.deleteCharAt(sb.length() - 1);
res.add(sb.toString());
return;
}
String str;
int size;
for (int i = index + min; i <= s.length() && i <= index + max; i++) {
if (set.contains(str = s.substring(index, i))) {
size = sb.length();
sb.append(str).append(' ');
dfs(s, res, sb, set, i, max, min);
sb.delete(size, sb.length());
}
}
}
}
相关文章
- Java高级面试题!69个经典Java面试题和答案详解
- JAVA多线程面试题_java多线程的实现方式
- java long string 转换_Java long 转成 String的实现[通俗易懂]
- java高级工程师面试情景题_Java高级工程师面试题III
- java指定长度数组长度_Java声明数组时不能指定其长度[通俗易懂]
- java打印数组_Java中打印数组的三种方式
- java 实现 按位异或_Java 按位异或的性质及其妙用
- java backoff_Java BackOff类代码示例
- java输出值取后两位小数,Java输出结果保留两位小数
- java 登录 qq_Java实现QQ登录
- java工作流_Java 实现简单工作流
- java中static关键字的作用_Java:Java中static关键字作用
- java setproperty 未生效_Java System类setProperty()方法及示例[通俗易懂]
- native2ascii java_Native2Ascii和Ascii2Native的Java实现
- 数据库Java实现Oracle数据库监控(java监听oracle)
- Java轻松使用Redis实现数据高效存储(java使用redis)
- Java脚本实现Linux系统的登录(java登录Linux)
- Java中使用Redis包实现高效缓存(redis包java)
- 数据库的操作Java与MySQL搭配:完美数据库操作(java对mysql)
- Java调用Linux库实现跨系统功能(java调用linux库)
- Java与MySQL的无缝衔接:实现高效数据操作(java中使用mysql)
- Java实现Linux:跨平台解决方案(java 实现linux)
- Java程序在Linux系统中实现命令操作(java运行linux命令)
- Java解答Oracle使用更轻松的实现方式(oracle写成java)
- Java导出Oracle数据提升数据分析流程效率(java导出oracle)
- Java使用Oracle实现优雅数据查询(java.oracle)
- 编程Oracle数据库中实现Java编程的突破之道(oracle使用java)
- 客户端Java客户端快速关闭Redis连接(关闭redis的java)