2016-08-23 35 views
0

我有一系列字符串代表航空公司的行程分为:总能找到一个字符串,其中包含元素中间由3个字符

FLROTP 
MADFCOFCOFLR 
BLQMADMADUIOUIOMADMADBLQ 
MXPJFKJFKMCOJFKMXP 
WAWPSAPSAWAW 
FLRFRAFRASGNSGNBKKBKKVIEVIEFLR 
FLRMUCMUCDELDXBDXBZRHZRHFLR 
FLRFRAFRASINSINMELMELSINSINFRAFRAFLR 
FLRCDGCDGCANCANJJNZHACANCANCDGCDGFLRWNZCANCANZHAHKGAMSFLR 
JFKMTYMTYMEXMEXPTYMDEMDEBOGBOGLIM 
PSAISTISTICNICNNRTNRTISTISTPSANRTISTISTPSA 
MXPDXBDXBPERPERADLADLMELMELASPASPAYQAYQASPASPSYDSYDDXBDXBMXP 
FLRFRAFRAORDORDLASLASBNACLTCLTMUCMUCPSA 
FLRCDGCDGBOGBOGBAQBAQBOGBOGCUCCUCBOGBOGMDEMDEBOGBOGUIOGYELIMLIMHAVHAVCDGCDGFLR 
FLRFRAFRALAXLAXSEASEAORDORDICTICTORDORDCMHCMHBOSBOSMIAMIAFRAFRAFLR 
PSAMUCMUCIADIADGSOGSOCLTCLTMIAMIADFWDFWICTICTDFWDFWCMHCMHPHLPHLALBALBIADIADFRAFRAFLR 
FLRFRAFRAEZEEZESCLSCLGRUCGHSDUSDUPOAPOAGRUGRULIMLIMUIOUIOBOGBOGPTYPTYPOSPOSMIAMIAFRAFRAFLR 
PSACDGCDGHAVHAVPTYPTYUIOUIOMDEMDEBOGBOGBAQBAQBOGBOGCUCCUCBOGBOGCDGCDGFLR 
FLRCDGCDGMEXMEXSJOSJOMEXBJXBJXMEXMEXCDGCDGPSA 

我想总是能够找到的“中间”字符串(90%的情况是乘客的目的地),但我缺乏想法。任何帮助? :)

+1

什么是'string'中间? –

+0

这个问题很不明确,但很有趣。试试['^(。*)(?:(。+)\ 2+)?(。*?)\ 2?\ 1 $'](https://regex101.com/r/lN5bB9/1) –

回答

1

你想要的不是字符串中间的索引,而是中间的最接近的索引,它是3的倍数,以索引有效3字母代码的开始。

你没有指定一种语言,所以我只是用C++来说明。

std::string code = "MXPJFKJFKMCOJFKMXP"; 

查找字符串的长度:

int length = code.size(); 

算你有多少代码有:

int codecount = length/3; 

找到中间代码,使用整数运算(四舍五入),与从零开始编号的代码:

int middlecode = codecount/2; 

找到你的中间代码开始索引:

int index = middlecode * 3; 

获取中间代码:

std::string destination = code.substr(index, 3); 

对于偶数的代码串,这会给第一个代码中的下半年字符串,如:

MXPJFKJFK MCO JFKMXP

对于具有奇数个码串,这将GI五个中间代码,例如:

FLRFRAFRAORDORDLAS LAS BNACLTCLTMUCMUCPSA

(在上述情况下看起来不对,但你没有说只有90%!)

+0

Looks正是我想要的:D – Bass

+1

在这个网站,通过upvoting所有有用的答案显示你的赞赏。您可以通过点击答案左上角的向上箭头来实现。另外,通过单击答案左上角的复选标记来接受最佳答案。这比在评论中表示感谢要好。 –

相关问题