java以单词的维度反转字符串(中间的空格不确定,并不可以缺少)

Yonina ·
更新时间:2024-09-20
· 505 次阅读

面试题(测试工程师的面试题):

有一个类似:“this is a book !”的字符串,要求把字符串反转成“! book a is this”,反转单词倒是好说,但是要求两个单词中的空格数不一定,而且不能有缺失

思路:

先把字符串切割成一个字符串数组,按照“”进行切割。或者转成char[] 也是可以的
然后再去遍历这个数组
如果当前的字符串不是" “,就一直添加到一个StringBuffer中,如果遍历到了空格,就说明单词结束了,就将这个单的StringBuffer添加到一个List中,并且把这个StringBuffer置空
如果当前的字符串是” ",就一直添加另一个StringBuffer中,如果遍历到字母,就说明不定长的空格结束了,就将这个不定长的空格字符串继续加到List中,然后置空这个StringBuffer()这样list中的元素不是单词就是一个不定长的空格,但是要注意,因为每次的添加操作都是在下一次遍历时进行,所以最后一个单词或者空格要单独做处理,然后反转这个list即可
表达能力有限,描述的不明不白,直接上代码吧

代码: // 反转字符串 // "this is a book , is very good !" 反转成 "! good very is , book a is this" // 坑:中间的空格不确定,但是反转后不能丢失空格,以单词维度进行反转 public String reverse(String str){ String [] strArray = str.split(""); // 装载每一个单词 StringBuffer word = new StringBuffer(); // 装载每一个不定长的空格 StringBuffer space = new StringBuffer(); // 最终的反转字符串 StringBuffer reverseStr = new StringBuffer(); // 每一个单词或者空格,按照顺序添加到该list中 List finalStr = new ArrayList(); // 不用增强for,因为遍历到最后一次,要做单独处理,要通过索引判断最后一次的遍历 for (int i = 0; i 0; i--) { reverseStr.append(finalStr.get(i-1)); } return reverseStr.toString(); } 调用 @Test public void test999(){ String s = " this is a book , is very good ! "; System.out.println(reverse(s)); } 结果:

原创文章 4获赞 0访问量 174 关注 私信 展开阅读全文
作者:也曾想一把guitar走天涯



JAVA 字符串 反转 维度 单词 字符

需要 登录 后方可回复, 如果你还没有账号请 注册新账号