[每天一题]删除字符串中的重复字符(不要使用额外空间)
2011-09-18 06:00
351 查看
Design an algorithm and write code to remove the duplicate characters in a string without using any additional buffer.NOTE: One or two additinal variables are fine. An extra copy of the array is not.
算法:
1,检查是否重复的字符被找出!
2,跳过重复的字符,更新不是重复的字符。
#include<iostream>
using namespace std;
void removedup(char str[10]);
void main()
{
char s[10]="abercobie";
for(int i=0;i<10;i++)
cout<<s[i];
removedup(s);
for(int i=0;i<10;i++)
cout<<s[i];
}
void removedup(char str[])
{
if(str==NULL) return;
int len=10;
if(len<2)return;
int i,j;
int tail=1;//用于记录所有unique的字符
for(i=1;i<len;i++)
{ for(j=0;j<tail;j++)
if(str[i]==str[j]) break;
if(j==tail)
{
str[tail]=str[i];
tail++;
}
}
str[tail]=0;
}
算法:
1,检查是否重复的字符被找出!
2,跳过重复的字符,更新不是重复的字符。
#include<iostream>
using namespace std;
void removedup(char str[10]);
void main()
{
char s[10]="abercobie";
for(int i=0;i<10;i++)
cout<<s[i];
removedup(s);
for(int i=0;i<10;i++)
cout<<s[i];
}
void removedup(char str[])
{
if(str==NULL) return;
int len=10;
if(len<2)return;
int i,j;
int tail=1;//用于记录所有unique的字符
for(i=1;i<len;i++)
{ for(j=0;j<tail;j++)
if(str[i]==str[j]) break;
if(j==tail)
{
str[tail]=str[i];
tail++;
}
}
str[tail]=0;
}
相关文章推荐
- 设计算法并写出代码移除字符串中重复的字符,不能使用额外的缓存空间。注意: 可以使用额外的一个或两个变量,但不允许额外再开一个数组拷贝。
- [每天一题]判断字符串里否是都是独一无二的字符(不要用额外空间)
- 判断字符串中有无重复字符,不使用额外的数据结构
- 实现一个算法来判断一个字符串中的字符是否唯一(即没有重复).不能使用额外的数据结构。 (即只使用基本的数据结构)
- 1.3 设计一个算法移除字符串中的重复字符,算法不使用额外缓冲。并对你的算法设计测试用例。
- 去除字符串中的重复字符,算法不使用额外缓冲。如abbc->abc
- 每天一道算法题12 在字符串中删除特定的字符
- 原串翻转 请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。 给定一个string iniString,请返回一个string,为翻转后的字符串
- 删除字符串中重复字符
- 实现字符串中重复次数最少字符删除
- JS使用正则表达式除去字符串中重复字符的方法
- 删除字符串中所有重复出现的字符
- 字符移位 小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。 你能帮帮小Q吗? 输入描述: 输入数据有多组
- 删除重复的字符(给一个字符串,删除连续重复的字符,要求时间复杂度为O(1)……)
- 删除字符串重复的字符
- 请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。
- 删除一个字符串中重复出现的字符
- [算法]删除字符串中重复的字符
- 数组字符串系列之,将矩阵逆时针旋转90度,要求使用最少的额外空间
- 把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。