Java实现字符串反转时保留开头前置空格的代码修改方案
保留前置空格的字符串反转实现
需求规则
- 输入字符串开头可包含任意数量前置空格,空格数量不固定
- 反转后所有原前置空格必须保留在结果字符串最开头,剩余非前置空格开头的内容正常反转
- 示例:输入
Computer,输出retupmoc
问题原因
原有实现直接对整个字符串做全量反转,会把开头的前置空格移动到结果末尾,不符合规则要求。
修改后完整代码
package BasicTesting; import java.util.*; public class Corrected_StringRev { public static void main(String[] args) { Scanner sc= new Scanner(System.in); System.out.print("Enter a string: "); String str= sc.nextLine(); String reversed = reverseString(str); System.out.println(reversed); sc.close(); } public static String reverseString(String newString) { // 定位第一个非空格字符的索引,拆分前置空格和待反转内容 int firstNonSpaceIndex = 0; int strLen = newString.length(); while (firstNonSpaceIndex < strLen && newString.charAt(firstNonSpaceIndex) == ' ') { firstNonSpaceIndex++; } String leadingSpaces = newString.substring(0, firstNonSpaceIndex); String needReversePart = newString.substring(firstNonSpaceIndex); // 仅对待反转内容做反转操作 char[] charArr = needReversePart.toCharArray(); StringBuilder reverseResult = new StringBuilder(); for (int i = charArr.length - 1; i >= 0; i--) { reverseResult.append(charArr[i]); } // 拼接前置空格和反转后的内容返回 return leadingSpaces + reverseResult.toString(); } }
实现逻辑说明
- 先遍历字符串找到第一个不是空格的字符位置,把字符串拆成前置空格段和实际内容段两部分
- 只对实际内容段执行反转操作,不改动前置空格段
- 最后把前置空格段放在最前面,拼接反转后的实际内容段返回,完全符合规则要求
- 额外补充了Scanner资源关闭的逻辑,避免资源泄漏
内容的提问来源于stack exchange,提问作者Julie
相关产品推荐
相关产品推荐

