使用Lambda

时间:2018-03-14 03:01:58

标签: 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' 输出:false

我的界面:

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"));

    }

}
只是练习。 OutPut:truetruetruetruetruetruetruetruetruetruetruetruetruetruetruetruetruetruetruetrue

2 个答案:

答案 0 :(得分:1)

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

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

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

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

abcdeabcde
  |||||
  cdeab

答案 1 :(得分:0)

如果你只是替换这个奇怪的行,它会产生更多的逻辑输出:

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

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

(我认为你从上面的一行复制粘贴太多了,你不需要!=附加行的results检查