我自己能实现要的效果,但是,执行速度比较慢。想求一个高效率的算法。
需求如下:
string str="你的白衣服你的白衣服(此处省略一万个‘你的白衣服’)";现在,想将“的”字替换为“白勺”(也就是所谓的散光字)
然后,想将“白”字规换为“bai”这里,就出现了一个干扰问题了。请问如何高效率解决这个问题?
注意了,我要的是最高效率的方法。

解决方案 »

  1.   

    为了让大家听懂,我再补充一下。简单点说,就是“你的白衣服”最终替换为“你白勺bai衣服”
      

  2.   

    KMP算法 《数据结构》中讲的很清楚
      

  3.   


    我来编一下,第一步,将“白”字规换为“bai”
    第二步,将“的”字替换为“白勺”public void foo()
    {
       string str="你的白衣服你的白衣服(此处省略一万个‘你的白衣服’)";
       StringBuilder sb = new StringBuilder(str);
       sb.Replace("白","bai");
       sb.Replace("的","白勺");
       显示(sb);
    }
      

  4.   

    String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能。
      

  5.   

    规则呢?为什么白替换成拼音,衣服不替换成yifu
      

  6.   

    public static string Process(string original)
            {
                if (original.Length < 1) return "";
                StringBuilder result = new StringBuilder();
                for (int i = 0; i < original.Length; i++)
                {
                    if (original[i] == '的')
                        result.Append("白勺");
                    else if (original[i] == '白')
                        result.Append("bai");
                    else
                        result.Append(original[i]);
                }
                return result.ToString();
            }
      

  7.   

    拜托楼主试一试代码,看清楚MSDN,sb.Replace("白","bai");
    是所有替换
      

  8.   

    我再编一下,第一步,将“的”字替换为“白勺”
    第一步,将“白”字规换为“bai”
    第三步,将“bai勺”字规换为“白勺”
    public void foo()
    {
       string str="你的白衣服你的白衣服(此处省略一万个‘你的白衣服’)";
       StringBuilder sb = new StringBuilder(str);
       sb.Replace("的","白勺");
       sb.Replace("白","bai");   
       sb.Replace("bai勺","白勺");
       显示(sb);
    }
      

  9.   

    string str="你的白衣服你的白衣服(此处省略一万个‘你的白衣服’)";
    是一万个“你的白衣服你的白衣服”