面试题之:将一句英文翻转语句符号不变问题解决

问题是解决了,不知道是否是面试官想要的答案,继续探索

public static void main(String[] args) {
    String str = "adf wer xcv wer,hfg lk;l uiouqwerwe .sdfds k;lwerwer";
    // 想要的结果:lwerwer;k sdfds. uiouqwerwe l; lk hfg,wer xcv wer adf
    // 业务思考:
    //      1:英文语句翻转,符号位置不变
    //         可以得到分割符:" "(空格)
    //      2:分割时有些符号需要转义:常见的:"." "|"等
    //      3:倒着循环获取数据
    //      4:字符串拼接
    // 输出的结果:lwerwer; k sdfds.  uiouqwerwe l; lk hfg, wer xcv wer adf
    StringBuilder sb = new StringBuilder();
    String[] split = str.split(" +");
    for (int i = split.length-1; i >= 0; i--) {
        String s = split[i];
        String[] strArr = s.split("");
        String fuhao = null;
        for (int j = 0; j < strArr.length; j++) {
            String ss = strArr[j];
            if(!Character.isLetter(ss.charAt(0))){
                fuhao = ss;
                break;
            }
        }
        String sp = fuhao;
        if(fuhao != null){
            if(sp.equals(".") || sp.equals("|")){
                sp = "\\"+sp;
            }
            String[] split1 = s.split(sp);
            for (int j = split1.length-1; j >= 0 ; j--) {
                String s1 = split1[j];
                if(j == split1.length-1){
                    sb.append(s1).append(fuhao).append(" ");
                }else{
                    sb.append(s1).append(" ");
                }
            }
        }else{
            sb.append(s).append(" ");
        }
    }
    System.out.println(sb.toString());
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值