java - 使用 Lambda 旋转字符串

标签 java java-8 functional-programming

所以我今天遇到了这个问题,但既然我们得到了答案,我尝试使用 lambda 来旋转它,我怀疑我的方法是使用 lambda 来使用反向字符串来旋转它,但希望得到关于如何解决这个问题的反馈。代码如下

我们有两个字符串,A 和 B。

A 上的移位包括获取字符串 A 并将最左边的字符移动到最右边的位置。例如,如果 A = 'abcde',则在 A 上移动一次后它将为 'bcdea'。当且仅当 A 在 A 上移动一定次数后可以变为 B 时,返回 True。

示例 1: 输入:A = 'abcde'B = 'cdeab' 输出:true

示例 2: 输入:A = 'abcde'B = 'abced' 输出:

我的界面:

public interface MyString {

    String myStringFunction(String str, String str1);

}

类别

public class RotateString {

    /**
     * @param args
     */

    public static String onRotateString(MyString rotateString, String A, String B) {


        return rotateString.myStringFunction(A, B);
    }


    public static void main(String[] args) {
        // TODO Auto-generated method stub


        MyString rotate = (A,B)->{

            String results ="";

            for(int i =0;i <A.length() ; ++i)

            for(int j = 0; j < B.length() ; ++j)

                 if (A.charAt((i+j) % A.length()) != B.charAt(i))

                results += A.charAt((i+j) % A.length()) != B.charAt(i);

            return results;

        };

        System.out.println(onRotateString(rotate,"abcde","abcde"));

    }

}

只是练习而已。 输出:truetruetruetruetruetruetruetruetruetruetruetruetruetruetruetruetruetrue

最佳答案

根据轮换算法的性质,这是另一种策略:

String a = "abcde";
String b = "cdeab";

boolean result = a.length() == b.length() && (a + a).contains(b);

如果两个字符串具有相同的长度,并且 ba + a 的子字符串,则结果将为 true:

abcdeabcde
  |||||
  cdeab

关于java - 使用 Lambda 旋转字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49269106/

相关文章:

java - java中的非法远程方法

java - Appium 滚动操作发生两次

java - 如何将流结果存储到多个列表或映射中

scala - 令人困惑的 Scala 高阶函数调用语法

c# - 闭包语法错误 F#

algorithm - 功能替代品?

java - SLES Apache Solr start.jar,无法访问 jarfile

java - 如何使用 kotlin 打包 List<Int>

java - 在 Java Lambda 中,为什么在捕获的变量上调用 getClass()

java - 如何汇总对象列表的各个字段并以单个对象的形式返回结果