如何找到长度为x的单词 这不是另一个长度为y的字符串的子字符串,
X < ÿ? e.g
word is - apple
req word - ape
word is aaabbab
req word - aba
答案 0 :(得分:1)
我想你要检查x.length()< y.length()和y.indexOf(x)== - 1
答案 1 :(得分:1)
比如说:
import org.testng.annotations.Test;
public class TestNotSubstring {
public String notSubstring(String sY, int x) {
if (sY.length() > x) {
String sX = sY.substring(0, x - 1);
sX = sX + (new Character((char) (sY.charAt(x)+1)).toString());
return sX;
} else {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < x; i++) {
sb.append("a");
}
return sb.toString();
}
}
@Test
public void testApple() {
String sY = "apple";
String sX = notSubstring(sY, 3);
System.out.println(sX);
assert(!sY.contains(sX));
}
@Test
public void testOrange() {
String sY = "orange";
String sX = notSubstring(sY, 5);
System.out.println(sX);
assert(!sY.contains(sX));
}
}
答案 2 :(得分:1)
我相信这样的问题是:
public class SubsequenceNotSubtring {
static void subseqNotSubstring(String word, int L) {
search(word, L, "", 0);
}
static void search(String word, int L, String subseq, int index) {
if (L == 0 && !word.contains(subseq)) {
System.out.println(subseq);
return;
}
for (int i = index; i < word.length(); i++) {
search(word, L-1, subseq + word.charAt(i), i+1);
}
}
public static void main(String[] args) {
subseqNotSubstring("apple", 3);
subseqNotSubstring("aaabbab", 3);
}
}
这列出了给定字符串中不是subsequences的给定长度的所有substrings。
上面的代码段找到以下内容(已注释,删除了dupes):
apple,3 => apl, ape, ale, ppe
aaabbab,3 => aba, bbb
应该注意的是,这种算法是天真的蛮力,具有可怕的渐近复杂性。如果需要,当然可以编造具有更复杂的字符串数据结构的更好的算法。最有希望的方向是使用suffix tree。
答案 3 :(得分:1)
如何开始(可能很慢)但很容易理解
Generate a list of letter combinations
a p p
a p p l
a p p l e
a p l
a p l e
a p e
a l e <=== look another answer
p p l
p p l e
p l e
Test each list item to see a). whether it is a substring b) whether it is a word
生成该列表可以很好地作为递归例程。