|   | 
     
        
      算法4.2 
        void replace(String& S, String T, String V) 
       { 
        // 
      以串V替代串S中出现的所有和串T相同的子串 
        n=StrLength(S); m=StrLength(T); pos = 1; 
        StrAssign(news, NullStr);     // 
      初始化 news 串为空串 
        i=1; 
        while ( pos <= n-m+1 && i ) 
        { 
         i=Index(S, T, pos);       // 
      从pos指示位置起查找串T 
         if (i!=0) { 
          SubString(sub, S, pos, i-pos); // 
      不置换子串 
          Concat(news, news, sub);    // 
      联接S串中不被置换部分 
          Concat(news,news, V);     // 
      联接V串 
          pos = i+m;           // 
      pos 移至继续查询的起始位置 
         } // if 
        } // while 
        SubString(sub, S, pos, n-pos+1);  // 
      剩余串 
        Concat( S, news, sub );      
      // 联接剩余子串并将新的串赋给S 
       } | 
      | 
     
        实现"置换"操作的基本思想为:由S和V生成一个新的串 news。首先将它初始化为一个空串,然后重复下列两步直至"查找不成功"为止: 
       1) 自 pos 位置起在串S中查找和T相同的子串; 
       2) 将S中不被置换的子串(即从 pos 起到和T相同子串在S中的位置之前的字符序列)和V相继联接到news 串上。 
       
        最后尚需将S中不被置换的字符序列联接到 news 串中,并将所得的新串赋给串 S。  
       
        这里要注意的是,语句 Concat(news,news,V) 
      的前提是不破坏V串。即在利用高级语言实现此算法时应注意看请语言使用手册中的说明。 | 
      |