- 4
- 0
- 约1.12万字
- 约 17页
- 2017-06-25 发布于福建
- 举报
题1,高分值题(41分)
字符串分割:已知某文件中存在一些字符串及其对应的权值,现输入一个较长的字符串,找出各种匹配种类,并计算相应的权值和。
例如:(文件的内容)
a 5
aa 12
bc 9
bcd 21
cd 15
输入字符串:aaabc
相应的输出为:
a a a bc 24
a aa bc 26
aa a bc 26
///////////////////////////////////////////////////////////#include iostream
#include vector
#include iterator
#include string
#include iomanip
using namespace std;
int stringToCharVector(string str, vectorchar v);
void searchAll(const string souStr, vectorstring comStr, vectorstring resultStr,\
string:: iterator sou_sIt, vectorstring::iterator result_sIt);
int main()
{
string souStr = aaabc;
string comString[] = {a,aa, bc};
vectorstring comStr (comString+0, comString+3);
vectorstring resultStr(1, begin);
string::iterator sou_sIt = souStr.begin();
vectorstring::iterator result_sIt = resultStr.begin();
searchAll(souStr, comStr, resultStr, sou_sIt, result_sIt);
return 0;
}
/*******************************功能函数部分********************************/
int stringToCharVector(string str, vectorchar v)
{
string::iterator sIt = str.begin();
v.clear();
while( sIt != str.end())
{
v.push_back(*(sIt++));
}
return 0;
}
void searchAll(const string souStr, vectorstring comStr, vectorstring resultStr, \
string:: iterator sou_sIt, vectorstring::iterator result_sIt)
{
if(sou_sIt == souStr.end())
{
int sumPower = 0;
for(vectorstring::iterator result_begin_sIt = resultStr.begin(); \
result_begin_sIt result_sIt; result_begin_sIt++)
{
cout*result_begin_sIt ;
if(*result_begin_sIt == a)
sumPower += 5;
else if(*result_begin_sIt == aa)
sumPower += 12;
else if(*result_begin_sIt == bc)
sumPower += 9;
else if(*result_begin_sIt == bcd)
sumPower += 21;
else if(*result_begin_sIt == cd)
sumPower += 15;
}
coutsumPowerendl;
return;
}
for(vectorstring::iterator com_begin_sIt = comStr.begin(); com_begin_sIt comStr.end(); com_begin_sIt++ )
{
int comStringLenth = (*(com_begin_sIt)).size();
int souStringLastLenth = souStr.end() - sou_sIt;
if(comStrin
原创力文档

文档评论(0)