牛客 - 倒置字符串(java)
题目
解题思路
解题代码
import java.util.*; public class Main{ //定义翻转字符数组的方法 public static void reverse(char[] arr,int start,int end){ while(start < end){ char tmp = arr[start]; arr[start] = arr[end]; arr[end] = tmp; start++; end--; } } public static void main(String[] args){ Scanner scan = new Scanner(System.in); String str = scan.nextLine(); //先转换成字符数组 char[] arr = str.toCharArray(); //先整体倒置 reverse(arr,0,arr.length - 1); //从 0 下标开始 int i = 0; //遍历字符数组的结束标志 while(i < arr.length){ int j = i; //j < arr.length 防止越界,整体表示遇见空格之前表示一个单词 while(j < arr.length && arr[j] != ){ j++; } //j后面还有单词 if(j < arr.length){ //倒置这部分的单词 reverse(arr,i,j - 1); //让i从下一个单词下标开始 i = j + 1; //说明j到这个数组最后了 }else{ //倒置最后的单词 reverse(arr,i,j - 1); //让i等于j 即是数组的长度,跳出循环 i = j; } } //让字符数组转换成字符串,因为最后输出的是字符串 String res = new String(arr); System.out.println(res); } }
题链接
上一篇:
通过多线程提高代码的执行效率例子