【题目描述】
给定一个单词,如果该单词以er、ly或者ing后缀结尾, 则删除该后缀(题目保证删除后缀后的单词长度不为0), 否则不进行任何操作。
【输入】
输入一行,包含一个单词(单词中间没有空格,每个单词最大长度为32)。
【输出】
输出按照题目要求处理后的单词。
【输入样例】
referer
【输出样例】
refer
这题很简单,就是按照要求把该删除的删除这里为了联系sting用到了:
reverse();
s.erase();
#include<iostream>
#include<string>
#include<iostream>
#include<string>
//#include<bits/stdc++.h>
#include<cctype>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{
string s;
cin>>s;
reverse(s.begin(),s.end());
string t1,t2;
t1.push_back(s[0]);
t1.push_back(s[1]);
t2.push_back(s[0]);
t2.push_back(s[1]);
t2.push_back(s[2]);
if(t1=="re"||t1=="yl")
{
s.erase(s.begin(),s.begin()+2);
reverse(s.begin(),s.end());
cout<<s<<endl;
}
else if(t2=="gni")
{
s.erase(s.begin(),s.begin()+3);
reverse(s.begin(),s.end());
cout<<s<<endl;
}
else
{
reverse(s.begin(),s.end());
cout<<s<<endl;
}
return 0;
}
比较常用的:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
char s[200];
int len;
int i;
gets(s);
len=strlen(s);
if(s[len-2]=='e'&&s[len-1]=='r')
{
s[len-2]='\0';
s[len-1]='\0';
}
if(s[len-2]=='l'&&s[len-1]=='y')
{
s[len-2]='\0';
s[len-1]='\0';
}
if(s[len-3]=='i'&&s[len-2]=='n'&&s[len-1]=='g')
{
s[len-3]='\0';
s[len-2]='\0';
s[len-1]='\0';
}
puts(s);
return 0;
}
其实这种在结尾不删除直接赋值为'\0'是很常用的方法
4818

被折叠的 条评论
为什么被折叠?



