字符串问题,高手请入!

diouf 2005-01-05 10:07:21
定义算法:写一个函数ans,在屏幕上显示字符串S中所有被至少一对圆括号所括起的子串(包括该对圆括号本身)。例如,字符串S为A+(b-c)/d+((a-c)/(b-d)+(a-d)/(b+d))/e+s时,屏幕显示的结果是:
(b-c)
(a-c)
(b-d)
(a-d)
(b+d)
((a-c)/(b-d)+(a-d)/(b+d))
字符串s满足:(1)左圆括号和右圆括号的个数相等;
(2)自左向右扫描该字符串的过程中,任何时刻已遇到的右圆括号个数不大于已遇到的左圆括号个数。
被函数ans显示的所有子串也满足上述两个性质。
...全文
119 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuelong_zl 2005-01-05
  • 打赏
  • 举报
回复
晕,怎么都人抢了,哎,今天是白来了
NoneSoVile 2005-01-05
  • 打赏
  • 举报
回复
char * str = new char[strlen("A+(b-c)/d+((a-c)/(b-d)+(a-d)/(b+d))/e+s")];
strcpy(str, "A+(b-c)/d+((a-c)/(b-d)+(a-d)/(b+d))/e+s");

====
不是一般的恶心!
dongpy 2005-01-05
  • 打赏
  • 举报
回复
用堆栈实现。
遇到"(",将它在字符串中的索引号压栈;遇到")",从栈中弹出一个索引号,并且输出子串。
寻开心 2005-01-05
  • 打赏
  • 举报
回复
这是一个完整的
#include "stdafx.h"
#include<iostream>
using namespace std;

class Que{
public:
int nIndex;
Que * pNext;
Que(){nIndex=-1; pNext=NULL;};
};

main()
{
char * str = new char[strlen("A+(b-c)/d+((a-c)/(b-d)+(a-d)/(b+d))/e+s")];
strcpy(str, "A+(b-c)/d+((a-c)/(b-d)+(a-d)/(b+d))/e+s");
Que* pHead = NULL;

for ( int i=0; i<strlen(str); i++ )
{
if (str[i]=='(' ) {
Que * pTemp = new Que();
pTemp->pNext = pHead;
pTemp->nIndex = i;
pHead = pTemp;
}
else if (str[i]==')' ) {
if ( pHead == NULL ) {
printf("%s", "错误,先遇到了')'符号");
return 1;
};
Que * pTemp = pHead; pHead = pHead->pNext;
int len = i-pTemp->nIndex + 2;
char * pTempS = new char [len];
memset(pTempS, 0, len);
memcpy(pTempS, str+pTemp->nIndex, len-1);
printf("%s\n", pTempS);
delete pTempS;
delete pTemp;
}
};
if(pHead!=NULL) printf("'('和')'数目不匹配");
printf("Good");
};
寻开心 2005-01-05
  • 打赏
  • 举报
回复
// 做一个队列
class Que{
public:
int nIndex; // 左括号的开始位置
Pos * pNext; // 下一个记录的指针
} * pQue = NULL;
Que* pHead = pQue;
for ( int i=0; i<strlen(str); i++ )
{
if (str[i]=='(' ) {
Que * pTemp = new Que();
pTemp->pNext = pQue;
pTemp->nIndex = i;
pHead = pTemp;
}
else if (str[i]==')' ) {
if ( pHead == NULL ) Error(先遇到了')' 符号,字符串非法) return;
Que * pTemp = pHead; pHead = pHead->pNext;
输出 str当中pTemp->nIndex到i这段
}
};
if(pHead!=NULL) 还有剩余的(没有找到匹配

70,020

社区成员

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

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