【华为机试真题 C++】带分隔符的字符串翻转单词-200

题目描述

对一行给定的字符串进行反转输出,同时去除中间不满足条件的分隔符输入字符串:I am an 20-years out–standing @ * -stu- dent,去除分割符并反转之后,输出字符串(子字符串以一个空格隔开):dent stu standing out 20-years an am I
分割符描述如下:
1、除了字母、数字和 - 之外,其他的都是分割符,如输入字符串中的@ *等都属于分割符
2、20-years中的’-’ 表示的是连接符,即当‘-’两边都有字母、数字时,‘-’就属于连接符,否则属于分割符
3、out–standing中的‘–’表示分割符,应该拆分为两个字字符串out 和 standing

测试用例

示例1

输入

I am an 20-years  out--standing @ * -stu- dent

输出

dent stu standing out 20-years an am I

解题思路

母题来自于:
本质上仍然是单词翻转,如果按照上题的解法,也可以通过50%的测试用例,剩下的就是本题在母题的基础之上加上了一些额外的规则:
规则1: – 符号用于分隔两个单词,效果等同于空格。
规则2: -如果位于两个单词之间,则用于两个单词的连字符&#

你可能感兴趣的:(华为机试真题C++,华为,c++,开发语言,算法)