Java 在给定整数处拆分长字符串
我参加了一次编程面试,他们让我写一个方法,该方法以一个长字符串和一个int作为参数,该方法应该在数字的每个间隔分割字符串。我不明白怎么做,所以我想我会在这里问一下,看看有没有人有什么想法Java 在给定整数处拆分长字符串,java,string,Java,String,我参加了一次编程面试,他们让我写一个方法,该方法以一个长字符串和一个int作为参数,该方法应该在数字的每个间隔分割字符串。我不明白怎么做,所以我想我会在这里问一下,看看有没有人有什么想法 顺便说一句:不幸的是我没有得到这份工作 很抱歉听到这个采访。太糟糕了。。。这是真的。 +1.跟进问题 在splitter函数中,我使用索引遍历“长字符串”。每次迭代我都使用String.substring方法从字符串中提取间隔的大小。(索引+间隔)。提取之后,我用间隔增加索引。因此,通过长串移动,一个间隔一个间
顺便说一句:不幸的是我没有得到这份工作 很抱歉听到这个采访。太糟糕了。。。这是真的。 +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对这次不幸表示歉意。祝你下次好运。我想用递归性来回答这个问题。它使算法更简单 这是我遵循的原则
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循环和Stringsubstring
方法。类似的问题请参阅。@jHilscher感谢您指出java中可用的\\G
。不要难过。尽可能多地阅读和使用java API这将有助于解决像这样的简单任务。谢谢你的好意(和不太好意…)注释。我知道这是我应该知道的,但我就是不知道。有人能写出解决方案吗?只需要一个for循环和Stringsubstring
方法。类似的问题请参阅。@jHilscher感谢您指出java中\\G
的可用性。谢谢