string origin="新华/网/南京/7月/29日/电/记者/王/骏/勇/南京市/7月/24日/发生/一起/绑架/勒索/案/几/名/犯罪嫌疑人/绑架/一/名/富商/的/儿子/向/其/家人/勒索/3000万/元/结果/双方/以/500万/元/成交/27日/南京/警方/在/接到/报案/后/雷霆/出击/快速/破获/此案/9/小时/内/将/主要/犯罪嫌疑人/郭/某/等/4/人/抓获/"
string[] Term = origin.Split('/');//Term数组为分次后的词语数组,未去重,最后一位为空。
for (int i = 0; i < Term.Length; i++)
            {
                for (int j = 0; j < Term.Length; j++)
                {
                //restart:
                    if (Term[i] == Term[j])
                        if (i <= j)
                        {
                            Term[i] = Term[i];
                            break;
                        }
                        else
                        {
                            if(i!=Term.Length-1)
                            Term[i] = Term[i + 1];//?????这里不对,未能去重,南京就没有去掉,待看!!!
                            //goto restart;
                        continue;
                          
                        }
                }
            }=======================================================================
我这样做的目的是想把分次后的那些词语去重,那个for循环想起个过滤作用。
基本思想是:如果一个词第一次出现,那就覆盖原来的数组,如果这个词在之前就已经出现过了,那就把它后面的词语往前移动一位,来覆盖。这样之后再来判断这个词语是否已经出现过了,如果有,那么就再做类似的递归操作(就是那个continue,即再次判断这个替换过的词是否在之前已经出现过了。如果没有,那就进行下一个词的判断。
但我的结果有问题,有的可以去掉,比如“7月”,有的就不能去,比如“南京”。
========================================================================
我觉得很奇怪,麻烦大家帮我看看是什么情况,谢谢!~~

解决方案 »

  1.   

        #region ArrayList的示例应用
        /// 方法名:DelArraySame     
        /// 功能:   删除数组中重复的元素
        /// </summary>    
        /// <param name="TempArray">所要检查删除的数组</param>
        /// <returns>返回数组</returns>   
        public string[] DelArraySame(string[] TempArray) 
        {          
            ArrayList nStr = new ArrayList();   
            for (int i = 0; i < TempArray.Length; i++)    
            {              
                if (!nStr.Contains(TempArray[i]))       
                {                 
                    nStr.Add(TempArray[i]);   
                }       
            }        
            string[] newStr = (string[])nStr.ToArray(typeof(string));   
            return newStr;
        }
        #endregion