给定两个字符串s1
和s2
,如果s2
包含s1
的排列,则写一个函数返回true。 换句话说,第一个字符串的排列之一是第二个字符串的substring
。
样例
样例1:
输入: s1 = "ab" s2 = "eidbaooo"
输出: true
解释: s2包含s1的一个排列("ba").
样例2:
输入: s1= "ab" s2 = "eidboaoo"
输出: false
题意:第一个字符串的排列之一是第二个字符串的`substring`。
思路:
1、将 s1 转换成数组后排序 a
2、从s2 中截取跟 s1 长度开始的子字符串转换成数组后排序 b
3、如果 Arrays.equals(a,b) return i
public class Solution {
/**
* @param s1: a string
* @param s2: a string
* @return: if s2 contains the permutation of s1
*/
public boolean checkInclusion(String s1, String s2) {
// write your code here
if (s1 == null || s2 == null || s1.length() > s2.length()) {
return false;
}
int length = s2.length();
int len = s1.length();
char[] a = s1.toCharArray();
Arrays.sort(a);
for (int i = 0; i <= length-len; i++) {
char[] b = s2.substring(i, i + len).toCharArray();
Arrays.sort(b);
if (Arrays.equals(a, b)) {
return true;
}
}
return false;
}
}
网友评论