AcWing
  • 首页
  • 题库
  • 题解
  • 分享
  • 问答
  • 活动
  • 应用
  • 吐槽
  • 登录/注册

C++中的 c_str() 函数在 java 中该用什么函数替代?



3


题目链接 LeetCode 165

用java改写直播中的C代码 部分 case 无法通过
原C
代码:

int a = i == x ? 0 : atoi(s1.substring(i, x - i).c_str()); 中 c_Str()函数的作用是什么?

错误的代码:

public int compareVersion(String s1, String s2) {
        int i = 0;
        int j = 0;
        while (i < s1.length() || j < s2.length()) {
            int x = i, y = j;
            while (x < s1.length() && s1.charAt(x) != '.')
                x++;
            while (y < s2.length() && s2.charAt(y) != '.')
                y++;
            int a = i == x ? 0 : Integer.valueOf(s1.substring(i, x - i));
            int b = j == y ? 0 : Integer.valueOf(s2.substring(j, y - j));
            if (a > b)
                return 1;
            if (a < b)
                return -1;
            i = x + 1;
            j = y + 1;
        }
        return 0;
    }

编译器报了什么错误?
✘ testcase: ‘“1.0”\n”1.1”’
bug处:

int a = i == x ? 0 : Integer.valueOf(s1.substring(i, x - i));

Line 18: java.lang.StringIndexOutOfBoundsException: String index out of range: -1



提问于2019-08-31 09:33
leetcoder
1357


2 个问答



1

bug 解决了

Java 中 substring 的用法不同于C++ substr()用法

java中 substring(begin_Index,end_Index)
C ++ 中 substr(begin_Index, end_Index-begin_Index+1(截取的长度));
代码中
int a = i == x ? 0 : Integer.valueOf(s1.substring(i, x - i));

应改为

int a = i == x ? 0 : Integer.valueOf(s1.substring(i, x));

回答于2019-08-31 10:15
leetcoder
1357


0

c_str() 的意思是将 C++ string 类的字符串的 C 字符数组形式表示,返回一个指针,表示 C 字符数组的头地址。

回答于2019-09-14 19:34
wzc1995
692407

我来回答
你确定删除吗?

© 2018-2021 AcWing 版权所有  |  京ICP备17053197号-1
联系我们  |  常见问题
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息