比较版本号[双指针截取自己想要的字串]

前言

确定begin/end,就确定了一个字串,用双指针取截取符合条件的字串。当然双指针作用不仅于此。

一、比较版本号

在这里插入图片描述

二、双指针

package everyday.doublePoint;

// 比较版本号
public class CompareVersion {
    /*
    target:比较version1和version2,大于返回1,小于返回-1,相等返回0。
    两者比较不同于普通的字符串比较,需要去掉前导0。
     */
    public int compareVersion(String version1, String version2) {
        int i1 = 0, i2 = 0;
        int j1 = i1, j2 = i2;
        while (j1 < version1.length() || j2 < version2.length()) {
            // 去掉前导为0.
            while (i1 < version1.length() && version1.charAt(i1) == 0) ++i1;
            // 取数
            while (++j1 < version1.length() && version1.charAt(j1) != '.') ;
            // 后序没有版本号视为0
            String s1 = i1 >= version1.length() ? "" : version1.substring(i1, j1);
            int val1 = s1 == "" ? 0 : Integer.parseInt(s1);
            // 更新i1/j1
            i1 = ++j1;// 走过省略号。
            // 同理,i2/j2如此。
            while (i2 < version2.length() && version2.charAt(i2) == 0) ++i2;
            while (++j2 < version2.length() && version2.charAt(j2) != '.') ;
            String s2 = i2 >= version2.length() ? "" : version2.substring(i2, j2);
            int val2 = s2 == "" ? 0 : Integer.parseInt(s2);
            // 更新i2/j2
            i2 = ++j2;// 走过省略号。
            // 开始比较
            if (val1 > val2) return 1;
            if (val1 < val2) return -1;
        }
        return 0;
    }
}

总结

1)双指针。

参考文献

[1] LeetCode 比较版本号

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值