题解 | #字符串变形#
字符串变形
https://www.nowcoder.com/practice/c3120c1c1bc44ad986259c0cf0f0b80e
思路一
- 先转换大小写;
- 翻转整个字符串;
- 以空格为分割,一个单词一个单词的进行反转;
import java.util.*; public class Solution { public String trans(String s, int n) { // write code here int len = s.length(); StringBuilder res = new StringBuilder(len); // 第一步:转换大小写 for(int i = 0; i < len; ++i){ char cur = s.charAt(i); if(cur >= 'a' && cur <= 'z'){ res.append((char)(cur - 'a' + 'A')); // 小写变大写 } else if(cur >= 'A' && cur <= 'Z'){ res.append((char)(cur - 'A' + 'a')); // 大写变小写 } else{ res.append(cur); // 空格 } } // 第二步:翻转整个字符串 res = res.reverse(); // 第三步:单个单词进行翻转 int i = 0; int j = 0; while(i < len){ j = i; // 指向空格 // 以空格为边界,翻转一个单词 while(j < len && res.charAt(j) != ' '){ ++j; } // 截取[i, j)区间的子串 StringBuilder word = new StringBuilder(res.substring(i, j)); word = word.reverse(); // 翻转单词 res.replace(i, j, word.toString()); // 替换原单词 i = j + 1; // 从下一个单词开始 } return res.toString(); } }