/** * 先直接逆序,这样确保最后那个单词在前面了,只不过此时单词是逆序的 * 然后再对每个逆序的单词进行调整 */ public class StringWordReverse { public String wordReverse(String str){ //在逆序之后的string之后补一个空格,为了统一处理方便 String temp = new StringBuffer(str).reverse().toString()+" "; int start = 0; int end = 0; char[] charArr = temp.toCharArray(); for (int i = 0; i < charArr.length; i++) { if (charArr[i] != ' '){ end = i; }else { for (int j = 0; j < (end-start+1)/2; j++) {//单词的长度 swap(start+j, end-j, charArr); } start = end + 2;//跳过中间的空格 end = end + 2; } } return new String(charArr); } public void swap(int i, int j, char[] charArr){ char temp = charArr[i]; charArr[i] = charArr[j]; charArr[j] = temp; } public static void main(String[] args) { StringWordReverse stringWordReverse = new StringWordReverse(); String result = stringWordReverse.wordReverse("q wfde wef"); System.out.println(result); } }
数据结构算法题/字符串按照单词翻转要求空间复杂度O(1)
最新推荐文章于 2022-05-27 19:26:13 发布