• 比较字符串和字符


    Leetcode 93(复原ip地址)

    比较字符串(数字型)大致有两种方法:

    1、通过Integer.valueOf()转化成数字

    1. class Solution {
    2. List result = new ArrayList<>();
    3. LinkedList temp = new LinkedList<>();
    4. public List restoreIpAddresses(String s) {
    5. dfs(s, 0);
    6. return result;
    7. }
    8. public void dfs(String s, int index) {
    9. if( index == s.length() && temp.size() == 4) {
    10. String t = "";
    11. for(int i=0;i1;i++) {
    12. t = t + temp.get(i) + ".";
    13. }
    14. t = t + temp.get(temp.size()-1);
    15. result.add(new String(t));
    16. }
    17. for(int i = index+1;i<=Math.min(index+3,s.length());i++) {
    18. if((i>=index+2 && Integer.valueOf(s.substring(index,index+1)) != 0 && Integer.valueOf(s.substring(index,i)) <= 255 )||(i==index+1)){
    19. temp.add(s.substring(index, i));
    20. dfs(s, i);
    21. temp.removeLast();
    22. }
    23. }
    24. }
    25. }

    2、通过str1.compareTo(str2),但是这种比较字符串的方法更适合判断两个字符串是否一样,不适用于范围比较

    1. if((i>=index+2 && s.substring(index,index+1).compareTo("0") != 0 && s.substring(index,i).compareTo("0") <= 255 )||(i==index+1))
    2. //全部使用compareTo的写法是不对的,例如,"500".compareTo("0") 会得到 "5"和"0"的ASCII差值
    3. 也就是5,并不能筛选出差值小于等于255的子字符串
    4. if((i>=index+2 && Integer.valueOf(s.substring(index,index+1)) != 0 && Integer.valueOf(s.substring(index,i)) <= 255 )||(i==index+1))
    5. //全部用Integer.valueOf()对于数字型字符串是很方便的,也是可行的
    6. if((i>=index+2 && s.substring(index,index+1).compareTo("0") != 0 && Integer.valueOf(s.substring(index,i)) <= 255 )||(i==index+1))
    7. //这样也是可行的,前者用compareTo(),后者用Integer.valueOf()

  • 相关阅读:
    王道操作系统___第三章02
    Walrus 入门教程:如何创建模板以沉淀可复用的团队最佳实践
    RBAC介绍
    Scala集合习题
    JavaEE——Thread类
    C++ - 封装 unordered_set 和 unordered_map - 哈希桶的迭代器实现
    Redis面试题(2022)
    【matplotlib 实战】--平行坐标系
    Centos 安装 python3.x 为默认
    AWS SAA-C03 #36
  • 原文地址:https://blog.csdn.net/weixin_43582743/article/details/132912183