带分隔符的字符串翻转单词

若如初见. 提交于 2020-03-01 13:28:23

1、题目描述:

 对一行给定的字符串进行反转输出,同时去除中间不满足条件的分隔符输入字符串: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

2、思路:剑指offer翻转单词变种

  由于字符串中含有分割符,因此要去掉分隔符。

  首先,需要去除字符串中的分隔符:借助栈stack来实现,依次遍历字符串中的元素,并插入stack中。字母数字直接插入;分割符不插入;空格需判断栈顶是否有空格再插入;“-”要判断前后元素是否为字母或数字来判断是否为分隔符。

  然后,将栈中的元素依次弹出,即实现了翻转,又去掉了分隔符。

  最后,将字符中的每个单词进行翻转,这就是剑指offer中的翻转单词的一步。

3、代码实现:

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!