PAT甲级.1077. Kuchiguse (20)

原创 2016年08月31日 10:54:05

1077. Kuchiguse (20)


题目

The Japanese language is notorious for its sentence ending particles. Personal preference of such particles can be considered as a reflection of the speaker’s personality. Such a preference is called “Kuchiguse” and is often exaggerated artistically in Anime and Manga. For example, the artificial sentence ending particle “nyan~” is often used as a stereotype for characters with a cat-like personality:

Itai nyan~ (It hurts, nyan~)
Ninjin wa iyada nyan~ (I hate carrots, nyan~)
Now given a few lines spoken by the same character, can you find her Kuchiguse?

输入格式

Each input file contains one test case. For each case, the first line is an integer N (2<=N<=100). Following are N file lines of 0~256 (inclusive) characters in length, each representing a character’s spoken line. The spoken lines are case sensitive.

输出格式

For each test case, print in one line the kuchiguse of the character, i.e., the longest common suffix of all N lines. If there is no such suffix, write “nai”.

输入样例1

3
Itai nyan~
Ninjin wa iyadanyan~
uhhh nyan~

输出样例1

nyan~

输入样例2

3
Itai!
Ninjinnwaiyada T_T
T_T

输出样例2

nai

PAT链接


思路

1.取第一个读取的字符串反转后存入ans[]内,之后对每个读入的字符串反转之后与ans从头到后比较,发现不同字符跳出,将之前相同的字符串再更新到ans中
2.将ans反转输出


代码

/**
* @tag     PAT_A_1077
* @authors R11happy (xushuai100@126.com)
* @date    2016-8-30 23:56-00:30
* @version 1.0
* @Language C++
* @Ranking  380/2402
* @function null
*/

#include <cstdio>
#include <cstdlib>
#include <cstring>

char str[110][260];

//反转字符串
void reverse(char s[])
{
    int len = strlen(s);
    for (int i = 0; i<len / 2; i++)
    {
        int tmp = s[i];
        s[i] = s[len - 1 - i];
        s[len - 1 - i] = tmp;
    }
}

int main(int argc, char const *argv[])
{
    int N,j;
    char ans[260];
    scanf("%d", &N);
    getchar();
    gets(ans);
    reverse(ans);
    for (int i = 1; i<N; i++)
    {
        char tmp[260];
        gets(str[i]);
        reverse(str[i]);
        int len_ans = strlen(ans);
        int len_str = strlen(str[i]);
        int len = len_ans > len_str ? len_str : len_ans;
        for (j = 0; j<len; j++)
        {
            if (ans[j] == str[i][j])    tmp[j] = ans[j];
            else break;
        }
        tmp[j] = '\0';  //注意,不是tmp[++j]
        strcpy(ans, tmp);
    }
    reverse(ans);
    if (strlen(ans)) puts(ans);
    else    printf("nai\n");
    return 0;
}

收获

1.对于从后向前比较的字符串,先反转再操作的话会比较简单

//反转字符串
void reverse(char s[])
{
    int len = strlen(s);
    for (int i = 0; i<len / 2; i++)
    {
        int tmp = s[i];
        s[i] = s[len - 1 - i];
        s[len - 1 - i] = tmp;
    }
}

2.字符串注意处理最后的’\0’

        tmp[j] = '\0';  //注意,不是tmp[++j]
版权声明:本文为博主原创文章,未经博主允许不得转载。

PAT甲级 1008.Elevator(20) 题目翻译与答案

1008.电梯 在我们的城市里,最高的建筑物里只有一部电梯。有一份由N个正数组成的请求列表。这些数表示电梯将会以规定的顺序在哪些楼层停下。电梯升高一层需要6秒,下降一层需要4秒。每次停下电梯将花费5秒...
  • qq278672818
  • qq278672818
  • 2017年02月14日 22:56
  • 478

PAT程序设计练习——甲级1002(两个多项式的解析与合并)

PAT程序设计能力测试 题目原文链接:点击打开链接 翻译题目要求: 程序输入为两行:均为一个多项式,按 K N1 An1 N2 An2 ......Nk Ank,K代表的是多项式的非零项数,范围闭区...
  • xexiyong
  • xexiyong
  • 2015年12月14日 13:18
  • 1091

PAT甲级题解目录

github源码地址:https://www.github.com/liuchuo/PAT ID Title C/C++(附分析) 备注 1001 A+...
  • liuchuo
  • liuchuo
  • 2016年09月10日 22:19
  • 5486

PAT 乙级 1062. 最简分数(20)

1062. 最简分数(20) 一个分数一般写成两个整数相除的形式:N/M,其中M不为0。最简分数是指分子和分母没有公约数的分数表示形式。 现给定两个不相等的正分数 N1...
  • toddphk
  • toddphk
  • 2017年01月09日 19:02
  • 507

PAT 1003. Emergency (25) (求两点间最短路的条数)

1003. Emergency (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 ...
  • IAccepted
  • IAccepted
  • 2014年03月18日 12:19
  • 7803

<心情随笔>2017.3.4 第一次PAT甲级惨烈结果_小结

说不伤心是假的,真的挺伤心的。 毕竟准备了一整个寒假,算法笔记也都逼着自己看了一遍。 不知道那些大佬们是什么感觉,反正除了那道微博转发抽奖的20分的题目我看懂了之外,后面三道可以说当时脑子就是一片空白...
  • UNuomo
  • UNuomo
  • 2017年03月04日 21:34
  • 641

【索引】PAT甲级题解

1001    A+B Format (20) 1002    A+B for Polynomials (25) 1003    Emergency (25) 1004    Counting Lea...
  • qq_34594236
  • qq_34594236
  • 2017年03月29日 09:49
  • 537

PAT 1077. Kuchiguse (20)(求最长公共后缀)(差一分)

官网1077. Kuchiguse (20)时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 HOU, Qiming...
  • qq_16949707
  • qq_16949707
  • 2016年09月23日 15:28
  • 154

PAT甲级解题报告汇总

PAT甲级解题报告汇总(更新中……)最近在刷PAT甲级题目,AC的题目都发了博文做记录。下面对博文进行一下汇总整理,方便查阅。下面所有题目的解题报告都是本人自己所作,每篇博文都有题目大意的解读,解题思...
  • NJU_Flepped
  • NJU_Flepped
  • 2017年08月02日 11:19
  • 315

浙大PAT考试1013~1016(最伤的一次。。)

我能说我1016WA了几天都不得最后还是拿别人代码交的么。。。 真心找不到那个神数据。。。 自己把整个程序的流程都画出来了,仔细推敲是木有问题的啊。。。 题目地址:http://pat.zju...
  • opm777
  • opm777
  • 2014年06月29日 23:40
  • 2065
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PAT甲级.1077. Kuchiguse (20)
举报原因:
原因补充:

(最多只允许输入30个字)