SAP社区编码挑战赛-2020年3月

2020-08-20 22:34发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


这是2020年3月SAP社区编码挑战赛的投票主题。 有关挑战的详细信息和方向,请参阅此博客:

https://blogs.sap.com/2020/02/ 28/sap-community-coding-challenge-series/

在此问题线程中,我将张贴7名决赛选手。 使用答案投票机制选择一种您认为应该是整体赢家的解决方案。 请记住:这都是为了娱乐和教育。 我们都是优秀的知识分享者,在这里都是赢家!

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


这是2020年3月SAP社区编码挑战赛的投票主题。 有关挑战的详细信息和方向,请参阅此博客:

https://blogs.sap.com/2020/02/ 28/sap-community-coding-challenge-series/

在此问题线程中,我将张贴7名决赛选手。 使用答案投票机制选择一种您认为应该是整体赢家的解决方案。 请记住:这都是为了娱乐和教育。 我们都是优秀的知识分享者,在这里都是赢家!

付费偷看设置
发送
15条回答
半个程序猿
1楼-- · 2020-08-20 23:08

决赛入围者4:选择不同的方法

通过:多米尼克·比格

< pre> SPLIT condense(句子)AT | | 到表数据(字)中。 out-> write(|字数:{行(words)} |)。 循环到单词ASSIGNING FIELD-SYMBOL()。 DATA(字符)=值ABAP_SORTORDER_tab(FOR char = 0 THEN char +1 UNTIL char = strlen()(name = + char(1)))。 选择DISTINCT * FROM @characters作为字符到表@DATA(unique_characters)中。 out-> write(|单词中唯一字符的数量:{<单词>}-{行(unique_characters)} |)。 结局。
me_for_i
2楼-- · 2020-08-20 23:16

我将尝试为我的本地修订提供一个AbapGit存储库-以及我的解决方案背后的故事...

ZJXianG
3楼-- · 2020-08-20 23:14

决赛选手#1:CL_ABAP_MATCHER方法

通过 Pawel Grzeskowiak

在空间SPLIT condense(句子)插入表数据(单词 )。


     out-> write(|字数:{行(words)} |)。


     循环到单词ASSIGNING FIELD-SYMBOL()。
       DATA(匹配器)=新cl_abap_matcher(
                       regex =新cl_abap_regex(pattern ='(。)(?!。* \ 1)')
                       text = )。
       out-> write(|单词中唯一字符的数量:{}-{行(matcher-> find_all())} |)。
     结局。
 
灬番茄
4楼-- · 2020-08-20 23:22

我认为我们应该只为一种解决方案投票。 似乎我们当中有些人否决了所有其他解决方案。 这不是很好。

记住:这一切都是为了娱乐和教育。

SAP砖家
5楼-- · 2020-08-20 23:14

入围者2:正则表达式方法

通过:亚历山大·弗兰克

在空间SPLIT condense(句子)中放入表数据(单词)。
     out-> write(|字数:{行(words)} |)。
     将单词引用到数据(单词)中。
       DATA(unique_chars_in_word)= replace(val = word-> * regex =`(。)(?=。* \ 1)`with =" occ = 0)
       out-> write(|单词中唯一字符的数量:{word-> *}-{strlen(unique_chars_in_word)} |)。
     结局。
 
Doze时光
6楼-- · 2020-08-20 23:26

关于5个决赛入围者中的3个所使用的正则表达式的说明,它们可以编写如下,以便更具可读性和可维护性(以下示例对应于DATA(unique_chars_in_word)= replace(val = word -> * regex =`(。)(?=。* \ 1)`=``occ = 0)):

 DATA(unique_chars_in_word)= replace(val = word-> *
     regex ='(。)'"注册为稍后重用的任何字符(。)((something))
             &'(?='",前提是后面跟
             &'。*'"-任何字符(。)重复零次或以上(*)
             &'\ 1)'"-第一个注册的字符(\ 1)
     用=``"将匹配替换为空(删除)
     occ = 0)。  "替换所有出现的内容

另一种解决方案是通过 https://regex101获得免费的在线说明。 com/r/7RznVy/3

一周热门 更多>