站点图标 陌路寒暄

字符串分段(串)

字符串分段(串)

时间: 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;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

退出移动版