字符串转整数
题目
思路
直接模拟,难点在于理清逻辑和字符串的处理
代码
public int myAtoi(String s) {
String str = s.trim();
if(str.isEmpty()){
return 0;
}
int max = Integer.MAX_VALUE,min = Integer.MIN_VALUE;
int index = 0,flag = 1;
long sum = 0;
if(str.charAt(index)=='-'||str.charAt(index)=='+'){
if(str.charAt(index)=='-'){
flag = -1;
}
index++;
}
while(index < str.length()){
char c = str.charAt(index);
if(c>='0' && c<='9'){
sum = sum*10 + (c-'0');
index++;
}else{
break;
}
if(sum>max||sum<min){
return flag==1?Integer.MAX_VALUE:Integer.MIN_VALUE;
}
}
return (int) (sum*flag);
}
分割数组的方案数
题目
思路
滑动窗口,直接累加比较就行了
代码
public int waysToSplitArray(int[] nums) {
if(nums == null || nums.length == 0)
return 0;
long leftSum=0,rightSum=0;
int x = 0;
for (int num : nums) {
rightSum += num;
}
for(int i=0;i<nums.length-1;i++){
leftSum += nums[i];
rightSum -= nums[i];
if(leftSum >= rightSum){
x++;
}
}
return x;
}