我有一段代码需要优化。
for (int i = 0; i < wordLength; i++) {
for (int c = 0; c < alphabetLength; c++) {
if (alphabet[c] != x.word.charAt(i)) {
String res = WordList.Contains(x.word.substring(0,i) +
alphabet[c] +
x.word.substring(i+1));
if (res != null && WordList.MarkAsUsedIfUnused(res)) {
WordRec wr = new WordRec(res, x);
if (IsGoal(res)) return wr;
q.Put(wr);
}
}
}
单词由字符串表示。问题是第 4-6 行的代码创建了许多字符串对象,因为字符串是不可变的。
如果我想获得更快的代码,我应该将我的单词表示更改为哪种数据结构?我试图将其更改为 char[],但随后我无法让以下代码正常工作:
x.word.substring(0,i)
如何从 char[] 获取子数组?以及如何在第 4.6 行连接 char 和 char[] ?
我可以使用任何其他合适且可变的数据结构吗?我想到了字符串缓冲区,但在字符串缓冲区上找不到合适的操作。
给定一个特定的单词,此函数生成所有相差一个字符的单词。WordRec 只是一个类,其中包含一个表示单词的字符串和一个指向该单词“父亲”的指针。
提前致谢