首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查配对是否已经存在?

如何检查配对是否已经存在?
EN

Stack Overflow用户
提问于 2016-04-09 00:27:47
回答 2查看 591关注 0票数 1

我有一个字符串,名为"abab“,我把它分成两对(即ab,ab)。如果pair已经存在,那么我不希望它是generated.How。我这样做了吗?

代码语言:javascript
运行
复制
      String r="abab";
      String  pair[] = new String[r.length()/2];
      for( int i = 0; i <pair.length; i++ ) 
      {
          pair[i] = r.substring(i*2,(i*2)+2);
      }
EN

回答 2

Stack Overflow用户

发布于 2016-04-09 00:50:02

在将它添加到对数组之前,可以使用Arrays函数.contains查看它是否已经存在。如果配对已经存在,则不要将其添加到配对列表中。例如,这里不会添加ab和fe对:

代码语言:javascript
运行
复制
  String r="ababtefedefe";
  String  pair[] = new String[r.length()/2];
  String currentPair = "";
  for( int i = 0; i <pair.length; i++ ) 
  {
      currentPair = r.substring(i*2,(i*2)+2);
      if(!java.util.Arrays.asList(pair).contains(currentPair))
        pair[i] = currentPair;
      System.out.println(pair[i]);
  }
票数 1
EN

Stack Overflow用户

发布于 2016-04-09 01:01:38

我会用一套来帮我脱身。

代码语言:javascript
运行
复制
private String[] retrieveUniquePair(String input) {
    int dim = input.length() / 2;
    Set<String> pairs = new LinkedHashSet<>(dim);

    for (int i = 0; i <= dim; i += 2) {
        String currentPair = input.substring(i, i + 2);
        pairs.add(currentPair);
    }

    return pairs.toArray(new String[] {});
}

编辑:我发布了我提出的解决方案和测试

代码语言:javascript
运行
复制
public class PairTest {

    @DataProvider(name = "input")
    public static Object[][] input() {
        return new Object[][] {
                {"abcd", Arrays.asList("ab", "cd")},
                {"abcde", Arrays.asList("ab", "cd")},
                {"abcdab", Arrays.asList("ab", "cd")},
                {"ababcdcd", Arrays.asList("ab", "cd")},
                {"ababtefedefe", Arrays.asList("ab", "te", "fe", "de")},
        };
    }

    @Test(dataProvider = "input")
    public void test(String input, List<String> expectedOutput) {
        String[] output = retrieveUniquePair(input);

        Assert.assertNotNull(output);
        Assert.assertEquals(output.length, expectedOutput.size());
        for (String pair : output) {
            Assert.assertTrue(expectedOutput.contains(pair));
        }
    }

    private String[] retrieveUniquePair(String input) {
        int pairNumber = input.length() / 2;
        Set<String> pairs = new LinkedHashSet<>(pairNumber);

        int endIteration = input.length();
        if (input.length() % 2 != 0) { // odd number
            endIteration--; // ignore last character
        }

        for (int i = 0; i < endIteration; i += 2) {
            String currentPair = input.substring(i, i + 2);
            pairs.add(currentPair);
        }

        return pairs.toArray(new String[pairs.size() - 1]);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36504678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档