注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
given an array of words. output array of simple words. compound wo what, so
附pass解答- static String[] simpleWords(String[] words) {
- if (words == null || words.length == 0) {
- return words;
- }
- List<String> list = new ArrayList<>();
- Set<String> dict = new HashSet<>();
- for (String s : words) {
- dict.add(s);
- }
- for (int i = 0; i < words.length; i++) {
- if (isSimple(words[i], dict)) {
- list.add(words[i]);
- }
- }
- String[] result = new String[list.size()];
- for (int i = 0; i < list.size(); i++) {
- result[i] = list.get(i);
- }
- return result;
- }
- static boolean isSimple(String s, Set<String> words) {
- if (s.length() == 0) {
- return true;
- }
- boolean flag = false;
- if (words.contains(s)) {
- flag = !flag;
- words.remove(s);
- }
- boolean[] isCut = new boolean[s.length()];
- for (int i = 0; i < s.length(); i++) {
- search(s.substring(0, i + 1), isCut, words);
- }
- if (flag == true) {
- words.add(s);
- }
- return isCut[s.length() - 1] == false;
- }
- static void search(String s, boolean[] isCut, Set<String> words) {
- int length = s.length();
- if (!words.contains(s)) {
- for (int i = 0; i < length; i++) {
- if (isCut[i] == true && words.contains(s.substring(i + 1, length))) {
- isCut[length - 1] = true;
- return;
- }
- }
- } else {
- isCut[length - 1] = true;
- }
- }
复制代码 |