[Python/C++](PAT)1077 Kuchiguse (20)

43 篇文章 0 订阅

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?

Input Specification:

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.

Output Specification:

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”.

Sample Input 1:

 

1

2

3

4

3

Itai nyan~

Ninjin wa iyadanyan~

uhhh nyan~

Sample Output 1:

 

1

nyan~

Sample Input 2:

 

1

2

3

4

3

Itai!

Ninjinnwaiyada T_T

T_T

Sample Output 2:

 

1

nai

 

题目大意:
给定这些字符串,找到公共后缀

分析:
因为求最长相同后缀,在一开始获取字符串的时候便将字符串倒置存放。
从第二个字符串开始,向前比较,获取相同的公共字符串。
从第三个开始,将字符串和公共字符串进行比较,进一步缩短或者保持不变公共字符串。
最后输出倒置的公共字符串

Python实现:

if __name__ =="__main__":
    num = int(input())
    get = []
    common = ''
    length = 0
    flag = True
    for x in range(num):
        line = input()[::-1]
        get.append(line)
        if common == '':
            common = line
            length = len(line)
        else:
            if line[0] != common[0]:
                print('nai')
                flag = False
                break
            else:
                temp = ''
                for i in range(min([len(line),len(common)])):
                    if line[i] == common[i] :
                        length = i + 1
                    else:
                        break
                if length < len(common):
                    common = common[:length]
    if flag:
        print(common[::-1])

C++实现:https://www.liuchuo.net/archives/2065

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值