You need to enable JavaScript to run this app. Java实现字符串校验:偶数长度交换相邻字符,奇数输出无效提示
优惠活动
大模型
产品
解决方案
定价
更多

Java实现字符串校验:偶数长度交换相邻字符,奇数输出无效提示

补全solve方法的具体实现

核心执行逻辑

solve方法严格按照规则要求按顺序执行校验和操作:

  • 首先判断输入字符串长度:如果长度为奇数,直接抛出携带“无效字符串”消息的异常。
  • 对长度为偶数的字符串逐字符校验:如果任意位置存在数字字符,同样抛出携带“无效字符串”消息的异常。
  • 全部校验通过的字符串(偶数长度、无数字字符),转换为字符数组后从索引0开始以步长2遍历,逐次交换相邻两个位置的字符,最终将处理后的字符数组拼接为字符串返回。

补全后的完整程序代码

import java.io.*;
import java.util.*;
class Main {
    static String solve(String str) throws Exception {
        int len = str.length();
        // 长度为奇数直接触发异常
        if (len % 2 != 0) {
            throw new Exception("无效字符串");
        }
        char[] charArr = str.toCharArray();
        // 检查字符串中是否存在数字字符
        for (char c : charArr) {
            if (Character.isDigit(c)) {
                throw new Exception("无效字符串");
            }
        }
        // 逐对交换相邻位置字符
        for (int i = 0; i < len; i += 2) {
            char temp = charArr[i];
            charArr[i] = charArr[i + 1];
            charArr[i + 1] = temp;
        }
        return new String(charArr);
    }

    public static void main(String []args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int t = Integer.parseInt(br.readLine());

        for (int i = 0; i < t; i++) {
            String str = br.readLine();
            try {
                System.out.println(solve(str));
            } catch(Exception e) {
                System.out.println(e.getMessage());
            }
        }
    }
}

运行效果示例

输入参数:

t=2
第一个待处理字符串:hgtsgf
第二个待处理字符串:tadad

程序输出:

  • 第一个字符串处理结果:ghstfg(逐对交换规则:hg→gh,ts→st,gf→fg,拼接为最终结果)
  • 第二个字符串处理结果:无效字符串(字符串长度为奇数,触发异常分支)

内容的提问来源于stack exchange,提问作者Madhav Singh Rajput

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.07 09:24:06