输入数据有多组,每组数据给出一个字符串 S ,如果 S 中的每个字符都是一样的,请输出“YooQ mei you pian wo”,否则请找出字符串 S 中与其他字符不同的字符并输出它。输入数据保证如果存在不同的字符的话,这个字符有且只有一个。
输入格式
在第一行给出一个正整数 T(1<=T<=100) 。表示共有 T 组数据。
接下来 T 行,每行给出一个字符串 S(3<=∣S∣<=50) 。
输出格式:
对于每一组输入数据,输出一行,如果存在某个不同的字符,请输出这个字符,否则请输出“YooQ mei you pian wo”,不带引号。
输入样例:
3
2个a o 两个a
6个a
7个a一个q
输出样例:
o
YooQ mei you pian wo
q
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int has_difference(char *str)
{
int i;
int j;
int len = strlen(str);
for (i = 0; i < len; i++)
{
for (j = i + 1; j < len; j++)
{
if (str[i] != str[j])
{
return j;
}
}
}
return -1;
}
int main()
{
int line = 0;
scanf("%d", &line);
char **strs = (char **)malloc(sizeof(char *) * line);
for (int i = 0; i < line; i++)
{
strs[i] = (char *)malloc(sizeof(char) * 50);
scanf("%s", strs[i]);
}
for (int i = 0; i < line; i++)
{
int res = has_difference(strs[i]);
if (res != -1)
{
printf("%c\n", strs[i][res]);
}
else
{
printf("YooQ mei you pian wo\n");
}
}
for (int i = 0; i < line; i++)
{
free(strs[i]);
}
free(strs);
return 0;
}
下面是我的一个实现,供参考:
#include <stdio.h>
//https://ask.csdn.net/questions/7657383?spm=1005.2025.3001.5141
int main(void){
int N;
char S[51];
int i=0,j=0;
int startReadChar = 0;
int same= 0;
char ch1=0,ch2=0;
scanf("%d",&N);
while(i<N){
scanf("%s",S);
ch1=0;
ch2=0;
while(S[j]!='\0'){
if(ch1!=S[j]&&ch1!=0){
ch2=S[j];
break;
}
ch1 = S[j];
// if(S[j]>='a'&&S[j]<='z'&&startReadChar==0){
// printf("1,ch1=%c,ch2=%c,S[%d]=%c,charIsSame=%d\n",ch1,ch2,j,S[j],charIsSame);
// ch1 = S[j];
// startReadChar=1;
// }
//
// if(S[j]>='a'&&S[j]<='z'&&ch1!=S[j]&&ch1!=0){
// printf("2,ch1=%c,ch2=%c,S[%d]=%c,charIsSame=%d\n",ch1,ch2,j,S[j],charIsSame);
// ch2=S[j];
// break;
// }
j++;
}
if(ch1!=ch2&&ch2!=0){
// printf("3 ch1=%c,ch2=%c\n",ch1,ch2);
printf("%c\n",ch2);
}
if(ch1==S[0]&&ch2==0){
// printf("4 ch1=%c,ch2=%c\n",ch1,ch2);
printf("YooQ mei you pian wo\n");
}
i++;
}
return 0;
}
//输入数据有多组,每组数据给出一个字符串 S ,如果 S 中的每个字符都是一样的,请输出“YooQ mei you pian wo”,
//否则请找出字符串 S 中与其他字符不同的字符并输出它。输入数据保证如果存在不同的字符的话,这个字符有且只有一个。
//输入格式
//在第一行给出一个正整数 T(1<=T<=100) 。表示共有 T 组数据。
//接下来 T 行,每行给出一个字符串 S(3<=∣S∣<=50) 。
//输出格式:
//对于每一组输入数据,输出一行,如果存在某个不同的字符,请输出这个字符,否则请输出“YooQ mei you pian wo”,不带引号。
//输入样例:
//3
//aaoaa
//aaaaaa
//aaaaaaaq
//输出样例:
//o
//YooQ mei you pian wo
//q
#pragma warning(disable:4996) //开头加这句或项目、属性、配置属性、C/C++、预处理器、预处理器定义中添加“_CRT_SECURE_NO_WARNINGS”
#include <stdio.h>
char *judge(char *s) {
char *p;
static char t[50+1];
static char c[256];
int i,maxc;
p=s;
for (i=0;i<256;i++) c[i]=0;
while (1) {
if (*p==0) break;
c[(unsigned int)(*p)]++;
p++;
}
maxc=0;
for (i=0;i<256;i++) if (maxc<c[i]) maxc=c[i];
if (maxc==1) {
sprintf(t,"%s",s+1);
} else {
p=t;
while (1) {
if (*s==0) break;
if (c[(unsigned int)(*s)]==1) *p++=*s;
s++;
}
*p=0;
}
if (t[0]==0) sprintf(t,"YooQ mei you pian wo");
return t;
}
int main() {
static char S[100][50+1];
int T,i;
scanf("%d",&T);
for (i=0;i<T;i++) {
scanf("%s",S[i]);
}
for (i=0;i<T;i++) {
printf("%s\n",judge(S[i]));
}
return 0;
}
//输入
//3
//aaoaa
//aaaaaa
//aaaaaaaq
//输出
//o
//YooQ mei you pian wo
//q
//