STL学习-字符串回文判断以及实现删除字符串中重复字符最少字符

回文判断,对于回文判断,不考虑输入中含有的字母数字外的字符,将这些字符删除掉进行判断:

bool NotAlphaNum(char ch)
{
 return (!isalnum(ch));
}
string ReplaceNoCharCharacter(string& str)
{

//remove_if首先删除指定区域满足断言的字符,但是这个函数不能删除相应的内存,只是把删除剩下的字符放到了字符串的开始,然后返回删除后字符串的超尾迭代器

//因此需要再使用erase删除之
 str.erase(remove_if(str.begin(),str.end(),NotAlphaNum),str.end());
 return str;
}
bool MyIsPalindrome(string& str)
{
 string str1(str);

//如果考虑要去除字符串中的非数字和字母,则需要加上这行

//str1=ReplaceNoCharCharacter(str1);
 reverse(str1.begin(),str1.end());
 if (str1==str)
 {
  return true;
 }
 return false;
}

 

因为是为了学习STL,所以所有的实现都是依靠STL相关函数完成,可能实现不是最佳选择,下面是删除一个字符串中重复次数最少字符的函数:

string DelChar(string& str)

{

vector<char> vecC;
map<char,int> charCount;
int icount=10000;.//这个值是假定的重复的最大次数,可以酌情修改

//遍历整个字符串,把相应的字符和重复的次数存入一个map中,并找到最少次数icount
for (string::iterator ite=str.begin();ite!=str.end();ite++)
{
 charCount[*ite] = count(str.begin(),str.end(),*ite);
 icount = (charCount[*ite]<icount?charCount[*ite]:icount);
}

//从string中删除字符

for (map<char,int>::iterator iter=charCount.begin();iter!=charCount.end();++iter)
{
 if (iter->second==icount)
 {
  str.erase(remove(str.begin(),str.end(),iter->first),str.end());
 }
}

return str;

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值