Java 在给定整数处拆分长字符串

Java 在给定整数处拆分长字符串,java,string,Java,String,我参加了一次编程面试,他们让我写一个方法,该方法以一个长字符串和一个int作为参数,该方法应该在数字的每个间隔分割字符串。我不明白怎么做,所以我想我会在这里问一下,看看有没有人有什么想法 顺便说一句:不幸的是我没有得到这份工作 很抱歉听到这个采访。太糟糕了。。。这是真的。 +1.跟进问题 在splitter函数中,我使用索引遍历“长字符串”。每次迭代我都使用String.substring方法从字符串中提取间隔的大小。(索引+间隔)。提取之后,我用间隔增加索引。因此,通过长串移动,一个间隔一个间

我参加了一次编程面试,他们让我写一个方法,该方法以一个长字符串和一个int作为参数,该方法应该在数字的每个间隔分割字符串。我不明白怎么做,所以我想我会在这里问一下,看看有没有人有什么想法


顺便说一句:不幸的是我没有得到这份工作

很抱歉听到这个采访。太糟糕了。。。这是真的。 +1.跟进问题

在splitter函数中,我使用索引遍历“长字符串”。每次迭代我都使用String.substring方法从字符串中提取间隔的大小。(索引+间隔)。提取之后,我用间隔增加索引。因此,通过长串移动,一个间隔一个间隔

索引+间隔可能大于长字符串的长度。(将导致越界异常)因此需要进行额外的检查以避免它,并保存剩余的字符串

public static void main(String[] args) {
    String veryLongString = "12345678901234567890";
    List<String> subStrings = splitter(veryLongString, 3);
    // Print the result
    for (String s : subStrings) {
        System.out.print(s + " ");
    }
}

public static List<String> splitter(String string, int interval) {
    int index = 0;
    List<String> subStrings = new ArrayList<String>();
    while (index < string.length()) {
        // Check if there is still enough characters to read.
        // If that is the case, remove it from the string.
        if (index + interval < string.length()) {
            subStrings.add(string.substring(index, index + interval));
        } else {
            // Else, less the "interval" amount of characters left,
            // Read the remaining characters.
            subStrings.add(string.substring(index, string.length()));
        }
        index += interval;
    }
    return subStrings;
}
publicstaticvoidmain(字符串[]args){
String veryLongString=“123456789001234567890”;
列表子字符串=拆分器(veryLongString,3);
//打印结果
for(字符串s:子字符串){
系统输出打印(s+“”);
}
}
公共静态列表拆分器(字符串,整数间隔){
int指数=0;
List substring=new ArrayList();
while(索引
输出:


123 456 789 012 345 678 90

很抱歉听到这次采访。太糟糕了。。。这是真的。 +1.跟进问题

在splitter函数中,我使用索引遍历“长字符串”。每次迭代我都使用String.substring方法从字符串中提取间隔的大小。(索引+间隔)。提取之后,我用间隔增加索引。因此,通过长串移动,一个间隔一个间隔

索引+间隔可能大于长字符串的长度。(将导致越界异常)因此需要进行额外的检查以避免它,并保存剩余的字符串

public static void main(String[] args) {
    String veryLongString = "12345678901234567890";
    List<String> subStrings = splitter(veryLongString, 3);
    // Print the result
    for (String s : subStrings) {
        System.out.print(s + " ");
    }
}

public static List<String> splitter(String string, int interval) {
    int index = 0;
    List<String> subStrings = new ArrayList<String>();
    while (index < string.length()) {
        // Check if there is still enough characters to read.
        // If that is the case, remove it from the string.
        if (index + interval < string.length()) {
            subStrings.add(string.substring(index, index + interval));
        } else {
            // Else, less the "interval" amount of characters left,
            // Read the remaining characters.
            subStrings.add(string.substring(index, string.length()));
        }
        index += interval;
    }
    return subStrings;
}
publicstaticvoidmain(字符串[]args){
String veryLongString=“123456789001234567890”;
列表子字符串=拆分器(veryLongString,3);
//打印结果
for(字符串s:子字符串){
系统输出打印(s+“”);
}
}
公共静态列表拆分器(字符串,整数间隔){
int指数=0;
List substring=new ArrayList();
while(索引
输出:


123 456 789 012 345 678 90

对这次不幸表示歉意。祝你下次好运。我想用递归性来回答这个问题。它使算法更简单

这是我遵循的原则

  • 如果字符串的长度小于或等于interval,则存储它,然后退出该方法
  • 否则,我们将子字符串从索引0移到interval-1,即String.substring(0,interval),然后存储,然后调用String.substring(interval)上的方法
  • 代码如下:

    import java.util.ArrayList;
    import java.util.List;
    
    public class StringHelper {
    
        private static List<String> workList = new ArrayList<String>();
    
        private StringHelper()
        {
    
        }
    
        public static void intervallSplit(String datas, int interval) {
            if (datas.length() <= interval) {
                workList.add(datas);
                return;
            }
    
            workList.add( datas.substring(0,interval));
            intervallSplit(datas.substring(interval), interval);
    
    
        }
    
    
        public static void main(String[] args) {
            String text = "1234567891011121314151617181920";
            intervallSplit(text, 3);
    
            System.out.println(workList);
        }
    
    }
    
    import java.util.ArrayList;
    导入java.util.List;
    公共类StringHelper{
    私有静态列表工作列表=新建ArrayList();
    私人助理()
    {
    }
    公共静态void intervallSplit(字符串数据,int interval){
    
    if(data.length()为这次不幸感到抱歉。祝你下次好运。我想用递归性来回答这个问题。它使算法更简单

    这是我遵循的原则

  • 如果字符串的长度小于或等于interval,则存储它,然后退出该方法
  • 否则,我们将子字符串从索引0移到interval-1,即String.substring(0,interval),然后存储,然后调用String.substring(interval)上的方法
  • 代码如下:

    import java.util.ArrayList;
    import java.util.List;
    
    public class StringHelper {
    
        private static List<String> workList = new ArrayList<String>();
    
        private StringHelper()
        {
    
        }
    
        public static void intervallSplit(String datas, int interval) {
            if (datas.length() <= interval) {
                workList.add(datas);
                return;
            }
    
            workList.add( datas.substring(0,interval));
            intervallSplit(datas.substring(interval), interval);
    
    
        }
    
    
        public static void main(String[] args) {
            String text = "1234567891011121314151617181920";
            intervallSplit(text, 3);
    
            System.out.println(workList);
        }
    
    }
    
    import java.util.ArrayList;
    导入java.util.List;
    公共类StringHelper{
    私有静态列表工作列表=新建ArrayList();
    私人助理()
    {
    }
    公共静态void intervallSplit(字符串数据,int interval){
    
    如果(datas.length(),请不要难过。请尽可能多地阅读和使用Java API。这将有助于解决像这样的简单任务。感谢nice(不是很好…)注释。我知道这是我应该知道的,但我就是不知道。有人可以编写解决方案吗?只需要一个for循环和String
    substring
    方法。类似的问题请参阅。@jHilscher感谢您指出java中可用的
    \\G
    。不要难过。尽可能多地阅读和使用java API这将有助于解决像这样的简单任务。谢谢你的好意(和不太好意…)注释。我知道这是我应该知道的,但我就是不知道。有人能写出解决方案吗?只需要一个for循环和String
    substring
    方法。类似的问题请参阅。@jHilscher感谢您指出java中
    \\G
    的可用性。谢谢