剑指offer面试题42_1翻转单词顺序(java实现)

来源:互联网 发布:网络加密方式有哪些 编辑:程序博客网 时间:2024/05/21 08:20

整体思想:1.先翻转整个英文句子;2.逐个翻转句子中的每个单词

package com.example.interview42_1;public class Solution {public String ReverseSentence(String str) {//整体思路:1.翻转整个英文句子;2.逐个翻转句子中的每个单词if (str == null || str.length() <= 0) {return "";}char[] charArray = str.toCharArray();//1.翻转整个英文句子int begin = 0;int end = charArray.length - 1;//翻转后得到的英文句子char[] reverseCharArray = Reverse(charArray, begin, end);//2.逐个翻转 翻转后的英文句子中的每个单词//需要确定begin和endbegin = end = 0;while (begin < reverseCharArray.length && end < reverseCharArray.length ) {if (reverseCharArray[begin] ==' ') {begin++;end++;} else if (reverseCharArray[end] == ' ') {//如果begin指向字符不为空格,而end指向为空格,此时可以确定一个单词的起始位置end--;Reverse(reverseCharArray, begin, end);//调整begin的位置,end的位置,end需要+1,begin和end位于同样的位置begin = ++end;} else {//如果begin指向字符不为空格,而end指向字符不为空格end++;}}if (end == reverseCharArray.length) {end--;Reverse(reverseCharArray, begin, end);}//将reverseCharArray转换为字符串String string = String.valueOf(reverseCharArray);return string;}public char[] Reverse(char[] charArray, int begin, int end) {if (charArray == null) {return null;}while (begin < end) {char temp = charArray[begin];charArray[begin] = charArray[end];charArray[end] = temp;begin++;end--;}return charArray;}}


阅读全文
0 0
原创粉丝点击