classSolution{publicStringreverseStr(String s,int k){// 按照题目要求,每隔2k个字符进行反转操作for(int i =0; i < s.length(); i +=2* k){if(i + k < s.length()){// 如果当前片段的长度大于k,则将该片段的前k个字符进行反转
s =reverse(s, i, i + k -1);}else{// 否则将整个片段进行反转
s =reverse(s, i, s.length()-1);}}return s;}publicStringreverse(String s,int start,int end){// 将字符串转换为字符数组char[] ch = s.toCharArray();// 使用双指针方式进行反转操作for(int i = start, j = end; i <= j; i++, j--){// 交换指针所指向的字符char temp = ch[j];
ch[j]= ch[i];
ch[i]= temp;}// 将字符数组转换为字符串并返回returnnewString(ch);}}
classSolution{publicStringreverseWords(String s){// " the sky is blue "// 去除字符串两端的空格, "the sky is blue"String trim1 = s.trim();// 将字符串反转, " eulb si yks eht"StringBuilder sb_reverse =newStringBuilder(trim1).reverse();// 将反转后的字符串按空格分割成单词数组, ["eulb si yks eht"]String[] str_words = sb_reverse.toString().split("\\s+");// 用于保存最终结果的变量String result ="";// 遍历单词数组for(String str : str_words){// 反转当前单词,并添加到结果中, ["blue is sky the"]
result +=newStringBuilder(str).reverse().toString();// 在每个单词后面添加一个空格
result +=" ";}// 去除结果字符串末尾的空格并返回return result.trim();}}