字符判断

来源:互联网 发布:人工智能对社会 编辑:程序博客网 时间:2024/06/08 17:22

问题:
描述
现在,有一行括号序列,请你检查这行括号是否配对。
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,
每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),
测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3
[(])
(])
([[]()])
样例输出
No
No
Yes
Yes

代码:

#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){int n,i;scanf("%d",&n);int ds,df,flag;while(n--){char *str=(char*)malloc(10005);scanf("%s",str);ds=0;df=0;flag=0;if(strlen(str)%2!=0){printf("No\n");free(str);continue;}else{for(i=0;i<=strlen(str);i++){if(str[i]=='(')ds++;if(str[i]==')')ds--;if(str[i]=='[')df++;if(str[i]==']')df--;if((str[i]=='('&&str[i+1]==']')||(str[i]=='['&&str[i+1]==')')){printf("No\n");free(str);flag=1;break;}}if(flag)continue;if(ds!=0||df!=0){printf("No\n");free(str); continue;}  else{printf("Yes\n");free(str);}}}return 0;}

总结:

字符串判断的时候使用字符指针,这样可以变换为字符数组进行单个字符的判断





问题:

/*
描述
输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。
输入
第一行输入一个数N,表示有N组测试数据。
后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成,之间无空格。
输出
对于每组输入数据,输出一行,字符中间用一个空格分开。
样例输入
3
qwe
asd
zxc
样例输出
e q w
a d s
c x z
*/




代码:

*/#include<stdio.h>#include<string.h>using namespace std;int main(){int i;char a,b,c,t;scanf("%d",&i);getchar();//只适用于c,吃掉回车 while(i--){ scanf("%c%c%c",&a,&b,&c);getchar();/*输入别的数据时,肯定是按回车结束的,而回车实际上输入了两个字符, 为了防止别的语句读到这个'\n',需要用一个getchar()先把它读走。*/if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;} printf("%c %c %c\n",a,b,c);}return 0;} /*#include "stdio.h"main(){char a,b,c,d;int i;scanf("%d",&i);getchar();while(i--){scanf("%c%c%c",&a,&b,&c);getchar();if (a>b) {d=a;a=b;b=d;}if (a>c) {d=a;a=c;c=d;}if (b>c) {d=b;b=c;c=d;}printf("%c %c %c\n",a,b,c);}}    */  


总结:

注意getchar()的用法。

0 0