1

这可能是一个非常基本的问题。我需要编写一个与字符串替换算法类似的代码。

static string stringReplace(string s, string stringOld, string stringNew)
    {
        string newWord = "";
        int oldMax = stringOld.Length;
        int index = 0;
        for (int i = 0; i < s.Length; i++)
        {
            if (index != oldMax && s[i] == stringOld[index])
            {
                if (stringOld[index] < stringNew[index])
                {
                    newWord = newWord + stringNew[index];
                    index++;
                }
                else
                {
                    newWord = newWord + stringNew[index];
                }
            }
            else
            {
                newWord = newWord + s[i];
            }
        }
        return newWord;
    }

由于现在是凌晨 3 点,上面的代码可能有问题。当新词比旧词短时,就会出错。和更长的时候一样。当 stringOld 和 stringNew 的索引变量相等时,它将进行交换。我认为...请不要发布“使用 string.Replace(),我必须自己编写该算法...

4

1 回答 1

1

我不知道你想用你的代码做什么,但问题不小。逻辑地思考你正在尝试做的事情。这是一个两步过程:

  1. 在 s 中找到 stringOld 的起始索引。
  2. 如果找到将 stringOld 替换为 stringNew。

第 1 步:有许多相当复杂(且优雅)的高效字符串搜索算法,您可以在线搜索它们或查看 Cormen、Leiserson、Rivest 和 Stein 的流行的“算法简介”,但天真的方法涉及两个循环,并且是很简单。在那本书(和在线)中也有描述。

第 2 步:如果在 index 处找到匹配项i;只需将字符复制0i-1of sto newWord,然后复制从 index 开始newString的其余字符。si + oldString.Length

于 2013-10-15T01:16:38.087 回答