您的位置:首页 > 其它

对于字符串删除重复元素的认识

2017-03-09 18:15 267 查看
    字符串中删除相同的元素,这个主要也涉及到几方面,一方面指的是是否需要重新申请新的空间,另一个就是还是考虑的是时间的复杂度。一般得到O(n*n)的容易实现。现在就针对这个时间复杂度有两中方式;

string  removeDuplicates(string s )
{
    int len = s.length();
    if (len<2) {
        return s;
    }

    // 申请一个字符串空间用于存储
    string str =
"";

    for (int i =0; i <len; i ++)
    {
        if (s[i]!=
' ')
        {
            str += s[i];

            for (int j = i+1; j<len; j++)
            {
                if (s[j]== s[i])
                {
                    s[j] =
' '; //为空

                }
            }
        }
    }
    return  str;
}
这种方法主要也是从前往后遍历,遇到相同的然后就设置为空,最后赋值给str。这是其中一种很常见的;
另一一种方式就是不在申请空间。

void removeDuplicate(char s[])
{
    int len =
strlen(s);
    if (len<2) {
        return;
    }

    int p ;
// 定义一个游标
    for (int i=0; i<len; i++)
    {
        if (s[i]!=
'\0')
        {
            s[p++] = s[i];
            for (int j = i+1; j<len; j++)
            {
                if (s[j] ==s[i])
                {
                    s[j] = '\0';
                }
            }
        }
    }
    s[p] = '\0';
}
其实这个代码和上面的代码是一样的。只不过这个是使用的数组来进行的。遇到相同的就置‘\0',来操作。最后领s[p]为空就行;

第一次写这样的文章。不太习惯;以后慢慢养成这样文字记录的时光;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: