【问题标题】:Generating Strings By Rotating Elements通过旋转元素生成字符串
【发布时间】:2020-05-31 13:49:22
【问题描述】:

我正在尝试开发一种算法,该算法接受输入字符串S,并通过一次消除两个字符来生成字符串。到目前为止,这是我的代码。

    String[] strings = {"a", "b", "c", "d", "e", "f"};
    int charsToBeRemoved = strings.length - 2;

    for( int i = 0; i < strings.length; i++ )
    {
        int counter = 1;
        StringJoiner p = new StringJoiner( "|" );
        p.add( strings[i] );
        for( int j = i + 1; j < strings.length; j++ )
        {
            p.add( strings[j] );
            counter += 1;
            if( counter == charsToBeRemoved )
            {
                counter = 1;
                j = ( charsToBeRemoved - 2 ) > 0 ? j - ( charsToBeRemoved - 2 ) : j;
                regexList.add( p.toString() );
                p = new StringJoiner( "|" );
                p.add( strings[i] );
            }
        }
    }

这提供了输出:[a|b|c|d, a|c|d|e, a|d|e|f, b|c|d|e, b|d|e|f, c|d|e|f]。但是,我想要的是一个基于旋转阵列的解决方案。像[a|b|c|d, a|c|d|e, a|d|e|f, b|c|d|e, b|d|e|f, b|e|f|a, c|d|e|f, c|e|f|a, c|f|a|b], d|e|f|a, d|f|a|b, d|a|b|c 这样的东西。在我当前的代码中,这些输出 b|e|f|a, c|e|f|a, c|f|a|b, d|e|f|a, d|f|a|b, d|a|b|c 没有形成,因为我需要一种方法来访问数组的先前元素。

谁能建议一种方法,或者我应该如何改变我的方法?

【问题讨论】:

  • 您的预期输出只有 [a|b|c|d, a|c|d|e, a|d|e|f, b|c|d|e, b|d| e|f, b|e|f|a, c|d|e|f, c|e|f|a, c|f|a|b] 或者这是样本,它将继续 [d|e| f|a] 等等。
  • @ShahidFarooq 是的,我的错,它也应该继续 d 值。我已经编辑了问题。

标签: java string algorithm


【解决方案1】:

要“环绕”到数组的开头,您可以使用% mod 运算符。

String[] strings = { "a", "b", "c", "d", "e", "f" };
int reduction = 2;

for(int i=0; i<strings.length; i++)
{
    for(int j=0; j<=reduction; j++)
    {
        StringJoiner p = new StringJoiner("|");
        p.add(strings[i]);
        for(int k=1; k<strings.length-reduction; k++)
            p.add(strings[(i + j + k) % strings.length]);
        System.out.println(p);
    }
}

输出:

a|b|c|d
a|c|d|e
a|d|e|f
b|c|d|e
b|d|e|f
b|e|f|a
c|d|e|f
c|e|f|a
c|f|a|b
d|e|f|a
d|f|a|b
d|a|b|c
e|f|a|b
e|a|b|c
e|b|c|d
f|a|b|c
f|b|c|d
f|c|d|e

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-11
    • 2019-02-18
    • 1970-01-01
    • 2023-03-14
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    相关资源
    最近更新 更多