怎么删除字符串中相邻相同的字符

OnMyWay2010 2010-03-22 12:22:54
删除相邻相同的字符
如:"abbc" -> "ac";
"abccbdeffeg" -> "adg"
谢谢大家!
...全文
1155 62 打赏 收藏 转发到动态 举报
写回复
用AI写文章
62 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
未能理解楼主意思的路过!
linyongzuo 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 onmyway2010 的回复:]
引用 13 楼 linyongzuo 的回复:
C/C++ code

#include<iostream>
using namespace std;
void main()
{
char a[10] = "123356677";
char b[10];
int j = 0;
for( int i = 0; i < 9; i++ )
{
if( a[i] == a[i……
……
[/Quote]
不好意思。题目看错。。
skipjack36 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 skipjack36 的回复:]

引用 13 楼 linyongzuo 的回复:

C/C++ code

#include<iostream>
using namespace std;
void main()
{
char a[10] = "123356677";
char b[10];
int j = 0;
for( int i = 0; i < 9; i++ )
{
if( a[i] == a[i……
[/Quote]

汗,理解有误
贪食蛇男 2010-03-22
  • 打赏
  • 举报
回复
没用栈那么麻烦吧,
linyongzuo 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 skipjack36 的回复:]
引用 13 楼 linyongzuo 的回复:

C/C++ code

#include<iostream>
using namespace std;
void main()
{
char a[10] = "123356677";
char b[10];
int j = 0;
for( int i = 0; i < 9; i++ )
{
if( a[i] == a[i+……
[/Quote]
我定义的只是范围内的。。你都超了。。哪来结果。。。要想长点可以自己定义。。只是个简单方法。。
skipjack36 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 linyongzuo 的回复:]

C/C++ code

#include<iostream>
using namespace std;
void main()
{
char a[10] = "123356677";
char b[10];
int j = 0;
for( int i = 0; i < 9; i++ )
{
if( a[i] == a[i+1] )
……
[/Quote]

如果 是 123455655489, 结果是什么呢
OnMyWay2010 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 linyongzuo 的回复:]
C/C++ code

#include<iostream>
using namespace std;
void main()
{
char a[10] = "123356677";
char b[10];
int j = 0;
for( int i = 0; i < 9; i++ )
{
if( a[i] == a[i……
[/Quote]
如果数组为:"123325667"呢?
结果就是"12257"了,还是有相邻相同的2
OnMyWay2010 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 thefirstz 的回复:]
使用栈吧,先push进去第一个,然后push第二个,如果栈顶的元素与接着要push的元素相同,就扔掉要push的这个元素,并且pop掉栈顶元素,一直到最后
[/Quote]
恩,我也想到了用栈,
但是如果要求函数原型如下:
char *doit(char *src);
返回结果必须是处理过的src呢?
是不是用栈的话时间和空间就有点多了
linyongzuo 2010-03-22
  • 打赏
  • 举报
回复

#include<iostream>
using namespace std;
void main()
{
char a[10] = "123356677";
char b[10];
int j = 0;
for( int i = 0; i < 9; i++ )
{
if( a[i] == a[i+1] )
{
i = i + 1;
continue;
}
else
{
b[j] = a[i];
j++;
}
}
b[j] = '\0';
cout<<b<<endl;
}
昵称很不好取 2010-03-22
  • 打赏
  • 举报
回复
使用栈吧,先push进去第一个,然后push第二个,如果栈顶的元素与接着要push的元素相同,就扔掉要push的这个元素,并且pop掉栈顶元素,一直到最后
dirtyhook 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 skipjack36 的回复:]

我的说法还有点问题,没那么简单
[/Quote]再加个计数器
OnMyWay2010 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 skipjack36 的回复:]
引用 8 楼 onmyway2010 的回复:

引用 7 楼 skipjack36 的回复:
我的说法还有点问题,没那么简单

思路是很好的
可能实现起来复杂点
呵呵


限制语言类型么
[/Quote]
C语言
skipjack36 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 onmyway2010 的回复:]

引用 7 楼 skipjack36 的回复:
我的说法还有点问题,没那么简单

思路是很好的
可能实现起来复杂点
呵呵
[/Quote]

限制语言类型么
OnMyWay2010 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 skipjack36 的回复:]
我的说法还有点问题,没那么简单
[/Quote]
思路是很好的
可能实现起来复杂点
呵呵
skipjack36 2010-03-22
  • 打赏
  • 举报
回复
我的说法还有点问题,没那么简单
OnMyWay2010 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 skipjack36 的回复:]
使用栈, 当下个字符与栈顶字符相同时, pop出栈顶;若不同, push字符入栈
[/Quote]
那若连续相同的字符为奇数和偶数时还要分开处理吧?
OnMyWay2010 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 onmyway2010 的回复:]
引用 2 楼 cfz379945430 的回复:
引用楼主 onmyway2010 的回复:
删除相邻相同的字符
如:"abbc" -> "ac";
"abccbdeffeg" -> "adg"
谢谢大家!

你的意思是删除重复的字符吧?什么相邻。。。。

恩,是删除相邻相同的,
比如"abcbcbc"转换之后还是"abcbcbc"
[/Quote]
因为"abcbcbc"中没有相邻相同的字符
OnMyWay2010 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cfz379945430 的回复:]
引用楼主 onmyway2010 的回复:
删除相邻相同的字符
如:"abbc" -> "ac";
"abccbdeffeg" -> "adg"
谢谢大家!

你的意思是删除重复的字符吧?什么相邻。。。。
[/Quote]
恩,是删除相邻相同的,
比如"abcbcbc"转换之后还是"abcbcbc"
skipjack36 2010-03-22
  • 打赏
  • 举报
回复
使用栈, 当下个字符与栈顶字符相同时, pop出栈顶;若不同, push字符入栈
ArmStronger 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 onmyway2010 的回复:]
删除相邻相同的字符
如:"abbc" -> "ac";
"abccbdeffeg" -> "adg"
谢谢大家!
[/Quote]
你的意思是删除重复的字符吧?什么相邻。。。。
加载更多回复(42)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧