以下是leetcode算法问题的代码:
class Solution {
public:
int myAtoi(string str) {
if(str == NULL || str.length() == 0) return 0;
int pos = true;
int result = 0;
int i = 0;
if(str.charAt(0) == '+' || str.charAt(0) == '-') {
++i;
if(str.charAt(0) == '-') pos = false;
}
for(; i != str.length(); ++i) {
if(str.charAt(i) >= '0' && str.charAt(i) <= '9') {
result = result*10 + (int)(str.charAt(i)-'0');
}
}
if(!pos) result=-result;
if(result > INT_MAX) return INT_MAX;
if(result < INT_MIN) return INT_MIN;
return result;
}
};
我收到了编译错误
Line 4: no match for ‘operator==’ (operand types are ‘std::string {aka std::basic_string<char>}’ and ‘long int’)
那么代码有什么问题?
答案 0 :(得分:8)
str
是std::string类型的对象,而不是指针,它不能是NULL
。仅使用str.empty()
而不是两个检查。
字符串中也没有函数charAt
。
答案 1 :(得分:5)
NULL
是一个整数常量,通常定义为0
或0L
。您无法将字符串与int进行比较。 str.length() == 0
和str.empty()
是两个不错的选择。