1141删除单词后缀

本文介绍了一道编程题目,要求在给定单词中,如果单词以er、ly或ing结尾,则删除这些后缀。给出了问题分析、解题思路以及对应的C++代码示例。
摘要由CSDN通过智能技术生成

一、题目

1141:删除单词后缀


时间限制: 1000 ms         内存限制: 65536 KB
提交数:39031    通过数: 26736

【题目描述】

给定一个单词,如果该单词以er、ly或者ing后缀结尾, 则删除该后缀(题目保证删除后缀后的单词长度不为0), 否则不进行任何操作。

【输入】

输入一行,包含一个单词(单词中间没有空格,每个单词最大长度为32)。

【输出】

输出按照题目要求处理后的单词。

【输入样例】

referer

【输出样例】

refer

二、解析

这个题可以这样想:

1、如何删掉后缀?

删掉,是不是就是不输出那个后缀呀呢?所以我们只需要找到这个单词有这个后缀,然后输出后缀前面的部分就可以啦。

比如 referer 这个单词,它字符串长度为7,所以最后一个单词的下标就为6(注意下标是从0开始的哟)。所以我们只需要输出0到5这个下标范围的字符就可以啦.像这样。

string s;
cin>>s;
for(int i=0; i<=5; i++) cout<<s[i];

2、删掉哪些后缀?

题目要我们找到以er、ly或者ing后缀结尾的单词,然后删掉这个单词的后缀。所以我们的后缀可以分为两种,一种是只有两个字母结尾的er和ly;另一种是ing结尾的。

我们怎么找到哪些单词后缀是er、ly或者ing呢?

        后缀,肯定是单词的最后的几个字母呀,所以我们可以用函数得到字符串的长度,然后判断最后几位是否是单词相应的单词。比如我们要找后缀是否是ing,我们就可以这样做

end = s.size()-1;//最后一位
if(s[end-2]=='i'&&s[end-1]=='n'&&s[end]=='g')
    //用循环输出字符串后缀之前的字母

为什么要分为两种呢?

        你看我们输出字符串的时候,循环的尾巴是不是就可以用字符长度减去2,减去3来控制了呀,所以我们就可以分成两种情况,用if,else if来完成。

三、代码

#include<bits/stdc++.h>
using namespace std;
int main() {
	string s;
	cin>>s;
	int end = s.size()-1;//最后一位
	if(s[end-1]=='e'&&s[end]=='r'||s[end-1]=='l'&&s[end]=='y')
		for(int i=0; i<=end-2; i++) cout<<s[i];
	else if(s[end-2]=='i'&&s[end-1]=='n'&&s[end]=='g')
		for(int i=0; i<=end-3; i++) cout<<s[i];
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值