在线编程习题“2110: 虚张声势”总是不能拿满分,找不到问题出在哪了?
题目描述
大战即将来临,杰洛特需要为自己声张声势,但是喊得太假有会被人识破
    因此杰洛特决定连着喊出两句话,两句话中所有的字母数量全部相等则不会被识破
    请指出杰洛特所喊的话是否会被识破

输入
一个t表示几组数据
    接下来t组,每组第一行一句话,第二行一句话
    每句话长度小于100000

输出
如果杰洛特没有被识破则输出"Yes"
    如果被识破了则喊出"No"
样例输入

2
wj nb
w jnb
Iiread
readii

样例输出

Yes
No

原题链接:问题 2110: 虚张声势

代码如下:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 100000

int cmp(char *s, char *t){return *s - *t;} // 比较函数
// 去掉t中的空白字符,升序排序后存入s
static inline void trip_sort(char *s, char *t){
    char *p, *delim = "\x20\t"; // 空白字符
    p = strtok(t, delim);
    *s = 0;
    do{ strcat(s, p); }while((p = strtok(NULL, delim)));
    qsort(s, strlen(s), 1, (void*)cmp);
}
// 当 cs 和 ct 中字符和每个字符的个数都一样时,返回 true,否则返返回false。
char* equal(char *cs, char * ct){
    static char b1[N], b2[N];
    trip_sort(b1, cs);
    trip_sort(b2, ct);
    return strcmp(b1, b2) ? "No":"Yes";
}

char buf1[N], buf2[N];
int main(void)
{   // 策略是:把两句话去掉空白字符,升序排序字符,比较字符串是否相等;

    scanf("%*d\n"); // 丢弃数字行
    // 一次读入两行,直到EOF
    while (gets(buf1) && gets(buf2)) puts(equal(buf1, buf2));
    return 0;
}

PS:分别计算各个字母出现的次数,然后比较,这样可以通过全部测试用例。但我也想弄清楚上面的代码问题出在哪里?

1个回答

非字母字符不一定是空格, 可能是标点符号呢。trip_sort中数组复制可以改成这样:

static inline void trip_sort(char *s, char *t){
    char * p = s;
    while(*t != NULL){
        if((*t >='a' && *t <= 'z') || (*t >='A' && *t <= 'Z')) {
            *p = *t;
            p++;
        }
        t++;
    }
    *p = 0;
    qsort(s, strlen(s), sizeof(char), (void*)cmp);
}
chenxizhan1995
chenxizhan1995 还真是,谢谢~
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

2
【球球大家了】VS2017出现error C2062: 意外的类型“char”怎么解决?
0
一道C语言编程实现的指数和分数函数的习题,要求C语言实现函数极值的计算
4
求教大佬,本人用eclipse做了个习题(如图所示第二题)出现不能运行(一直调试)显示切换当前指令指针
1
笨方法学python3 习题25,给sorted_words重新赋值,为什么不行,告诉我list不能分割
2
vb.net习题提问:如图
2
笨方法学python3上的习题43AttributeError: 'NoneType' object has no attribute 'enter',哪错了
1
PTA天梯赛练习题打印沙漏,为什么提交错误?
5
css能帮我看一下这个input输入框为什么不能设置高度吗?
0
vs code 编译时打印中文报错
0
笨办法学python3习题41学习面向对象术语的代码正确,但运行总是出现错误
1
C#练习题,做一个在控制台可以控制移动的字符■,要求俄罗斯方块简化版,研究了三天多了不会做,求一个示范
2
做python练习题遇到了几个小问题,希望得到各位的帮助
1
JS和HTML不知道哪出问题,运行完直接页面显示内部服务器错误
1
关于PTA习题大炮打蚊子的一点疑惑,提交显示答案正确,段错误?
1
多线程练习小问题 为什么这题notify不起作用
4
网页设计,在IE浏览器上可以正常输入,但其他浏览器上无法正常使用输入栏。大神们帮忙看看,马上要交的作业,急。
1
Python入门到实践习题12-3移动火箭问题
6
求MySQL练习题目的网站或者书
1
C语言练习题!好心人帮帮忙吧
0
求问python for everyone(python程序设计Horstmann)第二版习题答案