6.4 学习日志

一. java学习笔记
运算符:
1.算术运算符:区别++先后的赋值运算
2.关系运算符
3.逻辑运算符:要求两边都是布尔类型结果也是布尔类型
&(逻辑与同真为真) |(逻辑或一真为真) !(取反)
&&(短路与) ||(短路或) 效率高
短路现象:当使用短路与 左表达式已经为假 右表达式不执行 && ;短路或 左表达式true右表达式不执行
4.赋值运算符:使用扩展运算符时,永远不会改变运算结果类型 例如:byte i; i += 10; i = i + 10; 两者不同
5.位运算符
6.条件运算符(三目运算符):布尔表达式 ? 表达式1 : 表达式2
布尔表达式为true时 表达式1结果为整个表达式结果
布尔表达式为false时 表达式2结果为整个表达式结果
7.字符串连接运算符: +
当两边都是数字时,进行加法运算
当有一个以上的字符串时 结果为字符串拼接 (字符串和其他类型的数据拼接时,数据直接输出)
例如:int i = 90; System.out.println(i + “abc”); 90abc
当有多个运算时 ,自左向右进行运算
eg:int a = 10 , b = 20; System.out.println(a + b + “30”); 3030
输出 100 + 200 = 300; int a = 100; int b = 200;
1.System.out.println(“100+200=300”);
2.System.out.println(a + “+” + b + “=” + (a + b)); 不加括号结果为100+200=100200

二.力扣每日一题
26. 删除排序数组中的重复项
给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

题目分析:可以使用双指针对数组进行覆盖,当快指针的数不等于慢指针的数,慢指针推进一位后等于快指针的数,这样去重

int removeDuplicates(int* nums, int numsSize){
    if(numsSize == 0||nums == NULL) return 0;
    int i = 0,j;
    for(j = 1;j < numsSize;j++){
        if(nums[j] != nums[i]){
            i++;
            nums[i] = nums[j];
        }
       
    }
    return i+1;
}

8.字符串转化成整数
请你来实现一个 atoi 函数,使其能将字符串转换成整数。

首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:

如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。
假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。
该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。
注意:假如该字符串中的第一个非空格字符不是一个有效整数字符、字符串为空或字符串仅包含空白字符时,则你的函数不需要进行转换,即无法进行有效转换。

在任何情况下,若函数不能进行有效的转换时,请返回 0 。

分析题目要求:1.先去空格
2.判断第一个非空字符 ±时再连接后面有效数字 或者直接是数字或者为’\0’
可以使用switch语句判断
3.需要控制在int范围内,我们可以先计算ans值在与设置的上下限进行对比

int myAtoi(char * str){
    int i=0;
    int length=strlen(str);
    long max=2147483647,min=-2147483648;
    long long ans=0;
    int flag=0;
    while(str[i]!='\0'&&str[i]==' ')
        i++;
    //return i;
    switch(str[i]){
        case '+':{
            i++;
            while(str[i]!='\0'){
                if(str[i]<='9'&&str[i]>='0'){
                    ans=ans*10+(str[i]-'0');
                    if(ans>max)
                        return max;
                    i++;
                }else
                    break;
            }
            break;
        }
        case '-':{
            i++;
            while(str[i]!='\0'){
                if(str[i]<='9'&&str[i]>='0'){
                    ans=ans*10+(str[i]-'0');
                    if(-ans<min)
                        return min;
                    i++;
                }else
                    break;
            }
            ans=-ans;
            break;
        }
        case '\0':
            break;
        default:{
             while(str[i]!='\0'){
                if(str[i]<='9'&&str[i]>='0'){
                    ans=ans*10+(str[i]-'0');
                    if(ans>max)
                        return max;
                    i++;
                }else
                    break;
            }
            break;
        }
    }
    return ans;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值