题目012-左右两边子数组的和相等
思路:用到了三个循环,从头到尾遍历数组,比较左右两边数组的和是否相等,当然这种思路时间复杂度也比较高
核心代码:
class Solution {
public int pivotIndex(int[] nums) {
int sum1,sum2;
int index=0;
for(int i=0;i<nums.length;i++){
sum1=sum2=0;
for(int k=0;k<i;k++){
sum1+=nums[k];
}
for(int j=nums.length-1;j>i;j--){
sum2+=nums[j];
}
if(sum1==sum2){
return i;
}
}
return -1;
}
}
题目014-字符串的变位词
思路:关于s1想的是首先排序,因为是子串,牵扯到顺序,然后对于s2,每次利用substring函数分割s1.length长度的字符串,然后分割后的子串再排序,最后利用equals函数比较两个子串是否相等。
class Solution {
public boolean checkInclusion(String s1, String s2) {
int l1=s1.length(),l2=s2.length();
String sm,sn;
if(l2<l1) return false;
char[] s11=new char[l1];
char[] s22=new char[l1];
int k1=0,k2;
for(char c:s1.toCharArray())//将字符串先转换为字符数组,便于排序
{
s11[k1]=c;
k1++;
}
Arrays.sort(s11);//s1字符串按照从小到达的顺序排序
sm=String.valueOf(s11);//valueof()方法接受字符数组并返回字符串
int sum=0;
for(int i=0;i<l2&(i+l1<=l2);i++) {
k2 = 0;
String str = s2.substring(i, i + l1);
for (char c : str.toCharArray()) {
s22[k2] = c;
k2++;
}
Arrays.sort(s22);
sn=String.valueOf(s22);//valueof()方法接受字符数组并返回字符串
if (sm.equals(sn)) {//字符串之间的比较用equals
return true;
}
}
return false;
}
}
注意,用到的几个字符串函数
函数 | 作用 |
---|---|
str.toCharArray() | 将字符串中的字符转换为一个字符数组 |
str.substring(1,3) | 返回一个下标为1长度为2的字符串 |
String.valueOf() | 接受字符数组并返回字符串 |
Arrays.sort() | 对括号的数组升序排序 |
s1.eauals(s2) | 字符串s1和s2是否相等 |