题目描述
给定一个单词,如果该单词以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;
}