• 删除重复字符串的算法


    目前有一个字符串(假设是a,b,c,a,a,b,b),要求:

    1)删除重复的字符,仅保留一个(结果应该是:a,b,c)。

    2)删除全部重复的字符(只要有重复,就删除,结果为:c)。

    思路:

    可以先用一个外循环逐个字符遍历——每次遍历一个字符的时候,判断是否还有其它相同字符(LastIndexOf):

    对于1:删除其它相同的字符,直到全部删除干净。

    对于2:在1的基础上,删除自身。同时因为当前元素被删除之后,后一个元素会替补上来,因此循环变量需要自减,代码如下:

    /// <summary>
            /// 删除冗余字符串算法
            /// </summary>
            /// <param name="elements">被操作字符串</param>
            /// <param name="flag">是否保留一个重复字符</param>
            static void RemoveDuplicatedElements(List<string> elements, bool flag)
            {
                for (int i = 0; i < elements.Count; i++)
                {
                    int endIndex = elements.LastIndexOf(elements[i]);
    
                    //扫描是否有重复字符
                    if (endIndex != i)
                    {
                        //不断扫描,删除,直到除去自身以外全部删除了
                        do
                        {
                            elements.RemoveAt(endIndex);
                            endIndex = elements.LastIndexOf(elements[i]);
                        } while (i != endIndex);
    
                        //如果彻底删除重复字符,删除自身
                        if (!flag)
                        {
                            elements.RemoveAt(i);
                            i--;
                        }
                    } 
                }
            }
  • 相关阅读:
    eclipse中注释模板的修改
    Oracle 解锁Record is locked by another user
    Oracle 解锁Record is locked by another user
    提高网站速度的最佳实践
    Tomcat中配置SSL
    CentOS QQ
    csshack
    文件contentType
    JavaScript实现Iframe自适应其加载的内容高度
    转timer
  • 原文地址:https://www.cnblogs.com/ServiceboyNew/p/3250305.html
Copyright © 2020-2023  润新知