package point;/*** 题目:翻转单词* "nowcoder. a am I"-->"I am a nowcoder."* @Author Gavin* @date 2022年08月06日 17:12*/public class solution_5 {/***解题思路:* 1. 先进行字符串的全部翻转* 2. 然后对每一个单词进行翻转*/public String solution(String str) {if (str == null || str.length() == 0)return str;char[] arr = str.toCharArray();//转换成字符数组reverse(arr, 0, arr.length - 1);//先全部翻转一次int start = 0;//指向单词第一个字母int end = 0;//指向单词最后一个字母while (start < arr.length) {if (arr[start] == ' ') {//如果start指向的是空格,就换下一个,因为指针要指向的是单词。start++;end++;} else if (end == arr.length-1 || arr[end] == ' ') {//如果是end已经到最后一个长度了或者end是一个空格那么就应该反转了,意思就是一个单词的长度就结束了//一个单词就是start到end-1的长度,判断的依据就是end是不是空(单词与单词之间是按照空格分割的)或者到达数组的最后一个字符了reverse(arr, start, end);//翻转后,应该重新记录下个单词,因此更新end和start。end++;start = end;//这句和上一句可以写成start = ++end;} else {//到这里就说明,start指的不是空格,end也指的不是空格,说明是正常单词,end++即可end++;}}return String.valueOf(arr);}private void reverse(char[] arr, int begin, int end) {while (begin < end) {char temp = arr[begin];arr[begin] = arr[end];arr[end] = temp;begin++;end--;}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。