美文网首页
字符串合并处理

字符串合并处理

作者: 最困惑的时候就是能成长的时候 | 来源:发表于2019-08-17 19:29 被阅读0次

题目地址

1.想法:

这道题我的想法是完全没问题的

1.合并字符串
2.对奇偶数分别进行排序
3.翻转每个字符
4.转换成大小写
按道理来讲就应该没有任何的问题的,测试数据也是完全通过的,但是一编译就报错

image.png
就是提示 image.png
我是把所有的数组都改了一遍还是不能解决问题,数组越界是发生在哪个区域,完全的不知道.
[痛骂.jpg]
牛客网这个辣鸡的编译器,提示信息也太少了吧
唉!不能改变人家,只能从自身的问题入手,到底是哪里出了问题????
一遍遍的对比别人的代码,结果发现一个重大的错误!!!
条件是: (0-9 或者A-F或者 a-f)
image.png

我自己在判断数据转换的时候,少了一个A-F,结果发生了数组溢出,其实这种完全不给测试数据是什么的编译器,很蠢,但是我们不能改变什么所以,只能从自己的身上找原因

image.png
然后我就发现自己的解决过程有很大的问题,只是写清楚了步骤没有罗列条件是什么,输出是什么结果白白浪费了好长时间用于查找问题.所以我们在处理算法题的时候一定要写清楚输入什么,输出是什么,解决的步骤是什么.
完全没有罗列输入输出
而且如果题目没有罗列出来所有的字符串还是将条件分为已说明的字符串和未说明的字符串
image.png

2.代码:

import java.util.*;

public class Main {

    public static void main(String[] args) throws Exception {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            String str1 = in.next();
            String str2 = in.next();
            ProcessString(str1, str2, "");  //开始处理
        }

    }

    public static void ProcessString(String str1, String str2, String strOutput) throws Exception {
        String str3 = str1 + str2;
        if (str3 == null || str3.length() == 0) {  //进行判空
            System.out.println("");
        }
        List<Character> odd = new ArrayList<>();
        List<Character> even = new ArrayList<>();
        char[] chs = str3.toCharArray();
        for (int i = 0; i < chs.length; i++) {
            if (i % 2 == 0) {
                even.add(chs[i]);
            } else {
                odd.add(chs[i]);
            }
        }
        Collections.sort(even);
        Collections.sort(odd);
        int evenIndex = 0, oddIndex = 0;
        for (int i = 0; i < chs.length; i++) {
            char ch;
            if (i % 2 == 0) {
                ch = even.get(evenIndex++);
            } else {
                ch = odd.get(oddIndex++);
            }
            if ((ch >= '0' && ch <= '9') || (ch >= 'a' && ch <= 'f') || (ch >= 'A' && ch <= 'F')) {
                chs[i] = overChar(ch);
            } else {
                chs[i] = ch;
            }
        }
        strOutput = String.valueOf(chs);   //将char数组转化为String
        System.out.println(strOutput);
    }

    private static char overChar(char c) {
        String res;
        if (c >= 'a' && c <= 'f') {
            res = Integer.toBinaryString(c - 'a' + 10);
        } else if (c >= 'A' && c <= 'F') {
            res = Integer.toBinaryString(c-'A'+10);
        } else {
            res = Integer.toBinaryString(c - '0');
        }
        while (res.length() < 4) {   //不是所有的数字转换后刚好为4位,这个在其他位转化中也同样使用
 //例如char的范围为0-255,那么如果为想转化为8位的话,0只有1位而3只有2位为11
            res = "0" + res;
        }
        int result = 0;
        for (int i = 0; i < res.length(); i++) {
            result += (res.charAt(i) - '0') * (Math.pow(2, i));
        }
        char ch;
        if (result > 9) {
            ch = (char) (result - 10 + 'a');
        } else {
            ch = (char) (result + '0');
        }
        if (ch >= 'a' && ch <= 'z') ch = (char) (ch - 'a' + 'A');
        return ch;
    }
}

两个总结:
1.将char数组转化为String的做法是:

String res = String.valueOf(char[])     

而不是

String res = char[].toString();

2.如果使用将int变成二进制的String,一定要记得,其位数可能不够

String res = Integer.toBinaryString(1); //它是一个1不是0001

相关文章

  • 字符串合并处理:C++ bitset库和stoi()函数实践

    题目描述按照指定规则对输入的字符串进行处理。详细描述:将输入的两个字符串合并。对合并后的字符串进行排序,要求为:下...

  • 定时器

    for 循环 while循环 数组去重 alert(aList2);字符串处理方法1、字符串合并操作:“ + ”2...

  • mysql函数汇总之字符串函数

    字符串函数主要用来处理数据库中的字符串数据。mysql中的字符串函数有计算字符串长度函数、字符串合并函数、字符串替...

  • day14:《利用python进行数据分析》学习笔记

    第7章——数据规整化:清理、转换、合并、重塑 字符串处理 http://nbviewer.jupyter.org/...

  • ES6 -- 数组

    扩展运算 用于数组处理为字符串 代替了apply方法,个人理解还是将数组处理看 合并数组,代替了cancat方法,...

  • 字符串合并处理

    题目地址 1.想法: 这道题我的想法是完全没问题的 1.合并字符串2.对奇偶数分别进行排序3.翻转每个字符4.转换...

  • C语言字符串处理函数

    C语言提供了丰富的字符串处理函数,例如字符串的输入、输出、合并、修改、比较、转换、复制、搜索等,使用这些现成的函数...

  • 【Python进阶】2.14 合并拼接字符串

    2.14 合并拼接字符串 问题 你想将几个小的字符串合并为一个大的字符串 解决方案 如果你想要合并的字符串是在一个...

  • AppleScript-运算符

    算数运算符加、减、乘、除、乘方^ &运算符作用:合并字符串、合并数组如 \转义字符字符串中有引号时 字符串要显示“...

  • Excel函数使用技巧

    一、常用函数: 1、清洗处理类 Trim:清楚掉字符串两边的空格 Concatenate:合并单元格的内容,适用于...

网友评论

      本文标题:字符串合并处理

      本文链接:https://www.haomeiwen.com/subject/hmsksctx.html