zoukankan      html  css  js  c++  java
  • 删除重复字符串的算法

    目前有一个字符串(假设是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--;
                        }
                    } 
                }
            }
  • 相关阅读:
    JDBC 复习4 批量执行SQL
    JDBC 复习3 存取Oracle大数据 clob blob
    Oracle复习
    Linux命令(1)grep
    JDBC 复习2 存取mysql 大数据
    JDBC 复习1 DBUtil
    php 环境搭建问题
    Windows 批处理 bat 开启 WiFi 菜单选项 设置ID PWD
    Bat 批处理启动和停止Oracle 服务
    docker 学习1 WSL docker ,Windows docker
  • 原文地址:https://www.cnblogs.com/ServiceboyNew/p/3250305.html
Copyright © 2011-2022 走看看