字符串分段(串)
时间: 1ms 内存:128M
描述:
输入一个字符串,将其分段输出,分段符为除字母和数字之外的符号。
输入:
输入一个字符串
输出:
输出分段后的字符串
示例输入:
ad/adfa,123d?a1
示例输出:
ad
adfa
123d
a1
提示:
参考答案(内存最优[752]):
#include<stdio.h>
#include<malloc.h>
typedef struct
{
char *begin;
int n;
int size;
}LIST;
LIST * init_list()
{
LIST *p;
p=(LIST*)malloc(sizeof(LIST));
if(p!=NULL)
{
p->begin=(char*)malloc(1000*sizeof(int));
if(p->begin!=NULL)
{
p->n=0;
p->size=1000;
return p;
}
else
free(p);
}
return NULL;
}
int main()
{
LIST *p;
char c,a[1000]={0};
int i=0,j,flag=0;
p=init_list();
while(scanf("%c",&c)!=EOF)
{
p->begin[i]=c;
p->n++;
i++;
}
j=0;
for(i=0;i<p->n;i++)
{
if(p->begin[i]>='A'&&p->begin[i]<='Z'||p->begin[i]>='a'&&p->begin[i]<='z'||p->begin[i]>='0'&&p->begin[i]<='9')
{
a[j]=p->begin[i];
flag=1;
j++;
}
else
if(flag==1)
{
a[j]='#';
j++;
}
}
for(i=0;a[i]!='\0';i++)
{
if(a[i]!='#')
printf("%c",a[i]);
else
if(a[i+1]!='#'&&a[i+1]!='\0')
printf("\n");
}
printf("\n");
return 0;
}
参考答案(时间最优[0]):
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
char a[100];
int l;
int j=1;
cin>>a;
l=strlen(a);
for(int i=0;i<l;i++)
{
while(!((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')||(a[i]>='0'&&a[i]<='9')))
{
while(!((a[i+1]>='a'&&a[i+1]<='z')||(a[i+1]>='A'&&a[i+1]<='Z')||(a[i+1]>='0'&&a[i+1]<='9')))
{
i++;
}
cout<<endl;
i++;
}
cout<<a[i];
}
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。