C/C++编程学习 - 第9周 ⑥ 删除单词后缀

题目链接

题目描述

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

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

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

Sample Input

referer

Sample Output

refer

思路

判断最后两三个字母是不是"er", “ly”, “ing”。如果是,就少输出一个后缀,否则全部输出。

C++代码1:

#include<iostream>
using namespace std;
string s;
int r;
int main()
{
    
    
	cin >> s;
	r = s.size() - 1;//r指向我们应该输出字符串的最后一个字符的下标
	if(s[r - 1] == 'e' && s[r] == 'r') r -= 2;//如果最后两个字母是er,就不输出这两个字母,同时让r往前移动2位
	else if(s[r - 1] == 'l' && s[r] == 'y') r -= 2;//如果最后两个字母是ly,就不输出这两个字母,同时让r往前移动2位
	else if(s[r - 2] == 'i' && s[r - 1] == 'n' && s[r] == 'g') r -= 3;//如果最后三个字母是ing,就不输出这三个字母,同时让r往前移动3位
	for(int i = 0; i <= r; ++i)
		cout << s[i];//输出到从0到r的所有字符
	cout << '\n';
	return 0;
}

C++代码2:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    
    
	string str;
	while(cin >> str)
	{
    
    
		int len = str.length();
		if(str[len - 2] == 'e' && str[len - 1] == 'r')
		{
    
    
			for(int i = 0; i < len - 2; i++)
				cout << str[i];
			cout << endl;
		}
		else if(str[len - 2] == 'l' && str[len - 1] == 'y')
		{
    
    
			for(int i = 0; i < len - 2; i++)
				cout << str[i];
			cout << endl;
		}
		else if(str[len - 3] == 'i' && str[len - 2] == 'n' && str[len - 1] == 'g')
		{
    
    
			for(int i = 0; i < len - 3; i++)
				cout << str[i];
			cout << endl;
		}
		else cout << str << endl;
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_44826711/article/details/113095795