在java中获取数组的子字符串

时间:2015-04-01 04:40:46

标签: java arrays substring

我想通过一个int[]数组并从中获取子字符串值。例如,如果我的数组是{1,2,1,4},我希望能够提取{1,2}并将其与{1,4}进行比较,或者我想提取{1,2,1}并将其与{4,1,2}。我的问题是我想通过一个数组,看看“substring”值是否再次显示在数组中,但顺序相反。

我知道对于字符串你有子串(包含,独占)是否有类似的数组或我必须将数组转换为字符串才能做这样的事情?

4 个答案:

答案 0 :(得分:0)

你能不能简单地识别你想要使用的数组中的数字集和位置形式,然后从下一个索引开始并搜索序列中的第一个或最后一个数字,然后一旦找到它然后开始搜索下一个号码?

即[1,4,5,1,3,1,4,2]我们想要[1,4]并在数组中发现它是相反的。

从索引2开始:[5]!= 1 - > [1] == 1 - > [3]!= 4 - > [3]!= 1 - > [1] == 1 - > [4] == 4,成功。

答案 1 :(得分:0)

你可以简单地将数组中的每个数字与你设置的最后一个数字进行比较,如果它们匹配,那么进入一个循环,检查下一个数字是否与最后一个数字相同,等等。 否则就出来了,说没有比赛。

                                       Or

您可以在给定数组中以相反的顺序遍历以检查您的集合。 可能有点冗长,但适合所有人。

答案 2 :(得分:0)

如果其他东西不需要String表示,你可以(而且应该)只使用数组中的数字。

这是检查int数组中间隔对称性的函数。如果您愿意,可以更改ini的结尾,而不是ini,长度,当然也可以相应地更改算术。

public boolean checkSymmetry(int[] data, int ini, int length) {
    // Iterates the interval of interest
    for (int i=ini; i<ini+length-1; i++) {
        // The symmetric position: start from the end (length),
        // come back i positions and sum one (because arrays starts on 0)
        int symmetricPos = data.length - i - 1;
        if (data[i] != data[symmetricPos]) {
            return false;
        }
    }
    return true;
}

答案 3 :(得分:0)

您可以将整数数组转换为字符串,但Arrays.toString()函数可以逐字转换它。这样,从{1, 2, 2, 1}[1, 2, 2, 1]。有关详细信息,请参阅here

// strTest -> [1, 2, 2, 1]
String strTest = Arrays.toString(test);

但是,您可以删除方括号,逗号和空格。使用String.replace()String.replaceAll()函数。从[1, 2, 2, 1]1221

// strTest -> 1221
strTest = strTest.replaceAll(", ", "").replace("[", "").replace("]", "");

如果要反转现有字符串,可以使用StringBuffer.reverse()功能。

// use StringBuffer to acquire reverse of text
StringBuffer buffer = new StringBuffer(strTest.substring(2, 4)); // it will get '21' of '1221'
String revStrTest = buffer.reverse().toString(); // from '21' to '12'

以下是完整代码:

// from array of test
int[] test = { 1, 2, 2, 1};

// strTest -> [1, 2, 2, 1]
String strTest = Arrays.toString(test);

// strTest -> 1221
strTest = strTest.replaceAll(", ", "").replace("[", "").replace("]", "");

System.out.print(strTest.substring(0, 2) + " == " + strTest.substring(2, 4) + " : ");

// checks 12 and 21
if(strTest.substring(0, 2).equals(strTest.substring(2, 4)))
    System.out.println("EQUAL");
else
    System.out.println("NOT EQUAL");

// use StringBuffer to acquire reverse of text
StringBuffer buffer = new StringBuffer(strTest.substring(2, 4)); // it will get '21' of '1221'
String revStrTest = buffer.reverse().toString(); // from '21' to '12'

System.out.print(strTest.substring(0, 2) + " == " + revStrTest + " : ");

// checks 12 of strTest and 12 of revStrTest
if(strTest.substring(0, 2).equals(revStrTest))
    System.out.println("EQUAL");
else
    System.out.println("NOT EQUAL");