标签:
字符串
题目:
字符串旋转:
给定两字符串A和B,如果能将A从中间某个位置分割为左右两部分字符串(可以为空串),并将左边的字符串移动到右边字符串后面组成新的字符串可以变为字符串B时返回true。
例如:如果A=‘youzan’,B=‘zanyou’,A按‘you’‘zan’切割换位后得到‘zanyou’和B相同,返回true。
再如:如果A=‘abcd’,B=‘abcd’,A切成‘abcd’和’'(空串),换位后可以得到B,返回true。
示例1
输入:“youzan”,“zanyou”
返回值:true
示例2
输入:“youzan”,“zyouan”
返回值:false
示例3
输入:“nowcoder”,“nowcoder”
返回值:true
反思:
旋转字符串这道题目有一个非常巧妙的解法,由于是根据第一个字符串从中间某个位置切割之后根据移位来得到的
- 那么假设A=“abcd”,则A+A = “abcdabcd”
- 如果B满足条件,那么B一定属于A+A里面的一个子串
用到的知识点:
字符串、子串
代码:
import java.util.*;
public class Solution {
public boolean solve (String A, String B) {
if(A==null||B==null||A.length()<2||B.length()<2||A.length()!=B.length()){
return false;
}
return (A+A).contains(B);
}
}