MCPcopy Create free account
hub / github.com/Blankj/awesome-java-leetcode / Solution

Class Solution

src/com/blankj/hard/_0044/Solution.java:15–107  ·  view source on GitHub ↗

author: Blankj blog : http://blankj.com time : 2017/10/16 desc :

Source from the content-addressed store, hash-verified

13 * </pre>
14 */
15public class Solution {
16// public boolean isMatch(String s, String p) {
17// if (p.length() == 0) return s.length() == 0;
18// int si = 0, pi = 0, match = 0, star = -1;
19// int sl = s.length(), pl = p.length();
20// char[] sc = s.toCharArray(), pc = p.toCharArray();
21// while (si < sl) {
22// if (pi < pl && (pc[pi] == sc[si] || pc[pi] == '?')) {
23// si++;
24// pi++;
25// } else if (pi < pl && pc[pi] == '*') {
26// star = pi++;
27// match = si;
28// } else if (star != -1) {
29// si = ++match;
30// pi = star + 1;
31// } else return false;
32// }
33// while (pi < pl && pc[pi] == '*') pi++;
34// return pi == pl;
35// }
36
37// public boolean isMatch(String s, String p) {
38// if (p.length() == 0) return s.length() == 0;
39// int sl = s.length(), pl = p.length();
40// boolean[][] dp = new boolean[sl + 1][pl + 1];
41// char[] sc = s.toCharArray(), pc = p.toCharArray();
42// dp[0][0] = true;
43// for (int i = 1; i <= pl; ++i) {
44// if (pc[i - 1] == '*') dp[0][i] = dp[0][i - 1];
45// }
46// for (int i = 1; i <= sl; ++i) {
47// for (int j = 1; j <= pl; ++j) {
48// if (pc[j - 1] != '*') {
49// dp[i][j] = dp[i - 1][j - 1] && (sc[i - 1] == pc[j - 1] || pc[j - 1] == '?');
50// } else {
51// dp[i][j] = dp[i][j - 1] || dp[i - 1][j];
52// }
53// }
54// }
55// return dp[sl][pl];
56// }
57
58 public List<String> fullJustify(String[] words, int maxWidth) {
59 int len = words.length;
60 if (len == 0) return Collections.emptyList();
61 List<String> ans = new ArrayList<>();
62 StringBuilder spaces = new StringBuilder();
63 for (int i = 0; i < maxWidth; ++i) {
64 spaces.append(" ");
65 }
66 int sLen = -1, left = 0;
67 for (int i = 0; i < len; ++i) {
68 if (sLen + words[i].length() + 1 <= maxWidth) {
69 sLen += words[i].length() + 1;
70 } else {
71 StringBuilder sub = new StringBuilder(words[left]);
72 int rest = maxWidth - sLen;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected