所以我今天遇到了这个问题,但既然我们得到了答案,我尝试使用 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);
如果两个字符串具有相同的长度,并且 b
是 a + a
的子字符串,则结果将为 true:
abcdeabcde
|||||
cdeab
关于java - 使用 Lambda 旋转字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49269106/