所以我有字符串数组,我想看看是否有(包含)其他字符串作为字符串的一部分。
例如,考虑以下简单数组。
s[0]="Java"
s[1]="Java Programming"
s[2]="C Programming"
s[3]="C Programming is Cool"
最后,我只想保持
s[1]="Java Programming"
s[3]="C Programming is Cool"
因为 s[1] 包含 s[0] 而 s[3] 包含 s[2]。
这是我使用 String.Contains() 方法检测数组元素是否包含数组元素的代码,这看起来非常基本且效率低下..
int startPtr = 0;
while (startPtr < s.length-1) {
int tempPtr = startPtr+1;
while (tempPtr <= s.length-1) {
if (s[tempPtr].contains(s[startPtr])) {
//At this point, I know that I don't need s[startPtr] in result.
//Remove item at startPtr, if this were ArrayList or something.
startPtr++;
break;
} else { indexPtr++; }
}
在 startPtr 到达结尾之后,我想我必须以相反的顺序(从结尾开始并检查数组的开头)做同样的事情,以确保没有字符串是其他字符串元素的一部分。
有人可以帮助我更好的算法吗?另外,我相信这个算法会有 O(N^2),对吗?