对于字符串删除重复元素的认识
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]为空就行;
第一次写这样的文章。不太习惯;以后慢慢养成这样文字记录的时光;
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]为空就行;
第一次写这样的文章。不太习惯;以后慢慢养成这样文字记录的时光;
相关文章推荐
- 1.删除字符串中重复的字符 2.删除字符串中指定的字符串 3.删除数组中重复元素
- php利用正则表达式删除字符串里的重复元素
- 字符串的转换、逆置、删除重复元素及判断是否为邮件格式
- 删除字符串中重复的元素
- 删除字符串中重复元素
- STL—vector删除重复元素
- sqlserver分隔字符串,查找父类下所有子类,删除重复字符串,计算一字符串在别一字符中出现的次数
- 使用XSLT删除XML文件中的重复元素
- 数组合并并删除重复的元素
- 删除字符串组中相同元素,并删除值为空的元素 (转载,笔记)
- 删除单链表中重复的元素
- std::vector删除重复元素和查找
- 在javascript中,如果删除二维数组中重复的元素
- 去除java的泛型集合(字符串)重复元素参考代码
- PHP删除重复数组元素
- 删除集合中重复的元素
- 面试题精选(84):使序列有序的最少交换次数(minimum swaps) + 删除序列中所有重复的元素
- 在javascript中,如果删除二维数组中重复的元素
- 两种方法删除ArrayList里重复元素
- 2008年10月小记(SQL删除重复记录,生成表结构,字符串特性,statistics io)