首页 > 解决方案 > 给定一个字符串/文本,我如何从给定的字符串/文本中获取每对字母?

问题描述

给定一个字符串,我如何获取每对字母?

这是一个例子,给定 string = "asdfg",代码输出 arr[as,df,g_]; 给定 string = "asdfgghk",代码输出 arr[as,df,gg,hk]。

如果字符串长度是奇数,那么最后一对将是 char[i]_,(下划线)

这是我写的部分代码:


    public static char
    getCharFromString(String s, int index) 
    { 
        return s.charAt(index); 
    } 
    public static String[] solution(String s) {
        char a, b;
        String[] arr = new String[(s.length() / 2)];
        for(int i = 0; i < s.length(); i+=2) {
            if(s.length() % 2 == 0) {
                 a = getCharFromString(s, i);
                 b = getCharFromString(s, i + 1);
                arr[i] = a + b ;
            }
            else {
                a = getCharFromString(s, i);
                b = getCharFromString(s, i + 1);
                arr[i] = a + b ;
                if(i == s.length()) {
                    b = "_";
                }   
            }
        }
        return arr;
    }

标签: javaarraysstringletter

解决方案


众多解决方案之一:

public static String[] solution(String s) {
    int arrayLen = s.isEmpty() ? 1 : (int) Math.ceil(s.length() / 2.0);
    String[] arr = new String[arrayLen];

    for (int i = 0; i < arrayLen; i++) {
        arr[i] = s.substring(Math.min(s.length(), i * 2), Math.min(s.length(), i * 2 + 2));
    }
    if (arr[arrayLen - 1].length() == 1) {
        arr[arrayLen - 1] = arr[arrayLen - 1] + "_";
    } else if (arr[arrayLen - 1].isEmpty()){
        arr[arrayLen - 1] = "__";
    }

    return arr;
}

推荐阅读