所以我今天遇到了这个问题,但是既然我们给了答案我尝试使用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
答案 0 :(得分:1)
根据轮换算法的性质,这是另一种策略:
String a = "abcde";
String b = "cdeab";
boolean result = a.length() == b.length() && (a + a).contains(b);
如果两个字符串的长度相同,并且b
是a + a
的子字符串,则结果为true:
abcdeabcde
|||||
cdeab
答案 1 :(得分:0)
如果你只是替换这个奇怪的行,它会产生更多的逻辑输出:
results += A.charAt((i+j) % A.length()) != B.charAt(i);
带
results += A.charAt((i + j) % A.length());
(我认为你从上面的一行复制粘贴太多了,你不需要!=
附加行的results
检查